从逗号分隔的字符串中获取列,考虑每一行的值
get columns from string separated by comma, considering the values for each row
我想将逗号分隔的字符串或列表转换为列,如下所示
column1 | column2 | column3 |
A | X | [1, 2, 3] |
B | Y | [1, 4, 5, 8] |
C | Z | [5, 1] |
D | T | [4, 3] |
或
column1 | column2 | column3 |
A | X | 1,2,3 |
B | Y | 1,4,5,8 |
C | Z | 5,1 |
D | T | 4,3 |
到
column1 | column2 | 1 | 2 | 3 | 4 | 5 | 8 |
A | X | 1 | 1 | 1 | 0 | 0 | 0 |
B | Y | 1 | 0 | 0 | 1 | 1 | 1 |
C | Z | 1 | 0 | 0 | 0 | 1 | 0 |
D | T | 0 | 0 | 1 | 1 | 0 | 0 |
提前致谢
在第二种情况下,您可以使用 Series.str.get_dummies
轻松地 one-hot 编码 column3
列。
然后使用 Dataframe.join
将生成的 one-hot 编码列连接到原始 DataFrame。
import pandas as pd
df = pd.DataFrame({
'column1': ['A', 'B', 'C', 'D'],
'column2': ['X', 'Y', 'Z', 'T'],
'column3': ['1,2,3', '1,4,5,8', '5,1', '4,3']
})
res = (
df.drop(columns='column3')
.join(df['column3'].str.get_dummies(sep=','))
)
输出:
>>> res
column1 column2 1 2 3 4 5 8
0 A X 1 1 1 0 0 0
1 B Y 1 0 0 1 1 1
2 C Z 1 0 0 0 1 0
3 D T 0 0 1 1 0 0
在第一种情况下,假设 column3
包含整数列表,您可以执行与上述相同的操作,但首先将 column3
的值转换为 comma-separated 字符串。例如使用 Series.apply
df['column3'] = df['column3'].apply(lambda lst_nums: ','.join(map(str, lst_nums)))
如果 column3
的值是字符串列表,您可以使用 Series.str.join
代替
df['column3'] = df['column3'].str.join(',')
我想将逗号分隔的字符串或列表转换为列,如下所示
column1 | column2 | column3 |
A | X | [1, 2, 3] |
B | Y | [1, 4, 5, 8] |
C | Z | [5, 1] |
D | T | [4, 3] |
或
column1 | column2 | column3 |
A | X | 1,2,3 |
B | Y | 1,4,5,8 |
C | Z | 5,1 |
D | T | 4,3 |
到
column1 | column2 | 1 | 2 | 3 | 4 | 5 | 8 |
A | X | 1 | 1 | 1 | 0 | 0 | 0 |
B | Y | 1 | 0 | 0 | 1 | 1 | 1 |
C | Z | 1 | 0 | 0 | 0 | 1 | 0 |
D | T | 0 | 0 | 1 | 1 | 0 | 0 |
提前致谢
在第二种情况下,您可以使用 Series.str.get_dummies
轻松地 one-hot 编码 column3
列。
然后使用 Dataframe.join
将生成的 one-hot 编码列连接到原始 DataFrame。
import pandas as pd
df = pd.DataFrame({
'column1': ['A', 'B', 'C', 'D'],
'column2': ['X', 'Y', 'Z', 'T'],
'column3': ['1,2,3', '1,4,5,8', '5,1', '4,3']
})
res = (
df.drop(columns='column3')
.join(df['column3'].str.get_dummies(sep=','))
)
输出:
>>> res
column1 column2 1 2 3 4 5 8
0 A X 1 1 1 0 0 0
1 B Y 1 0 0 1 1 1
2 C Z 1 0 0 0 1 0
3 D T 0 0 1 1 0 0
在第一种情况下,假设 column3
包含整数列表,您可以执行与上述相同的操作,但首先将 column3
的值转换为 comma-separated 字符串。例如使用 Series.apply
df['column3'] = df['column3'].apply(lambda lst_nums: ','.join(map(str, lst_nums)))
如果 column3
的值是字符串列表,您可以使用 Series.str.join
代替
df['column3'] = df['column3'].str.join(',')