Python 将逗号分隔字符串的DataFrame列转换为一个热编码字符串
我有一个由一列组成的大数据框(“数据”)。列中的每一行由一个字符串组成,每个字符串由逗号分隔的类别组成。我希望对这些数据进行热编码 比如说,Python 将逗号分隔字符串的DataFrame列转换为一个热编码字符串,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个由一列组成的大数据框(“数据”)。列中的每一行由一个字符串组成,每个字符串由逗号分隔的类别组成。我希望对这些数据进行热编码 比如说, data = {"mesh": ["A, B, C", "C,B", ""]} 由此,我希望得到一个数据帧,包括: index A B. C 0 1 1 1 1 0 1 1 2 0 0 0 我怎样才能做到
data = {"mesh": ["A, B, C", "C,B", ""]}
由此,我希望得到一个数据帧,包括:
index A B. C
0 1 1 1
1 0 1 1
2 0 0 0
我怎样才能做到这一点?请注意,您不是在处理职业健康安全问题
str.split
+stack
+get\u dummies
+sum
应用
+值\u计数
pd.交叉表
我想有一个更简单的答案,或者我觉得这比我们必须进行的多个操作更简单
data = {"mesh": ["A, B, C", "C,B", ""]}
sof_df=pd.DataFrame(data)
sof_df.mesh=sof_df.mesh.str.replace(' ','')
sof_df.mesh.str.get_dummies(sep=',')
\
行连续字符和缩进-我的眼睛!你很快就能发布选项,真的很不错。现在这是piR-esque
@JonClements-fixed…:P
(df.mesh.str.split(r'\s*,\s*', expand=True)
.apply(pd.Series.value_counts, 1)
.iloc[:, 1:]
.fillna(0, downcast='infer'))
A B C
0 1 1 1
1 0 1 1
2 0 0 0
x = df.mesh.str.split('\s*,\s*', expand=True).stack()
pd.crosstab(x.index.get_level_values(0), x.values).iloc[:, 1:]
df
col_0 A B C
row_0
0 1 1 1
1 0 1 1
2 0 0 0
data = {"mesh": ["A, B, C", "C,B", ""]}
sof_df=pd.DataFrame(data)
sof_df.mesh=sof_df.mesh.str.replace(' ','')
sof_df.mesh.str.get_dummies(sep=',')
A B C
0 1 1 1
1 0 1 1
2 0 0 0