我想将由元素列表组成的pandas列分解成与唯一元素即one-hot-encode它们一样多的列(其值1表示行中存在的给定元素0,如果不存在则表示给定元素)。例如,取数据框dfCol1 Col2 Col3 C 33 [Apple, Orange, Banana] A 2.5 [Apple, Grape] B 42 [Banana] 我想将其转换为:dfCol1 Col2 Apple Orange Banana Grape C 33 1 1 1 0 A 2.5 1 0 0 1 B 42 0 0 1 0如何使用pandas / sklearn实现此目的?
3 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
用途get_dummies:
df_out = df.assign(**pd.get_dummies(df.Col3.apply(lambda x:pd.Series(x)).stack().reset_index(level=1,drop=True)).sum(level=0))
输出:
Col1 Col2 Col3 Apple Banana Grape Orange
0 C 33.0 [Apple, Orange, Banana] 1 1 0 1
1 A 2.5 [Apple, Grape] 1 0 1 0
2 B 42.0 [Banana] 0 1 0 0
清理列:
df_out.drop('Col3',axis=1)
输出:
Col1 Col2 Apple Banana Grape Orange
0 C 33.0 1 1 0 1
1 A 2.5 1 0 1 0
2 B 42.0 0 1 0 0
添加回答
举报
0/150
提交
取消