为了账号安全,请及时绑定邮箱和手机立即绑定

如何从包含列表的熊猫列中进行一次编码?

如何从包含列表的熊猫列中进行一次编码?

侃侃尔雅 2019-10-09 15:49:29
我想将由元素列表组成的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


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 358 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信