对具有多个值的字符串列执行二进制编码

时间:2019-06-21 20:03:15

标签: python pandas dataframe

我有一张这样的床单。

 taglist
0  1|2|3
1  2|3|4


taglist = DataFrame(taglist.str.split('|',expand = True))

我可以将其转换为:

    0     1     2  
0   1     2     3
1   2     3     4

但是,我想要这样: 在同一列中使用Onehotencoder使用相同的编号。

      1   2   3  4
0     1   1   1  0
1     0   1   1  1

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

这是一个简单的编码问题,您可以使用str.get_dummies来做到这一点:

df['taglist'].str.get_dummies(sep='|')

   1  2  3  4
0  1  1  1  0
1  0  1  1  1

或者,以str.split为基础,我们也可以使用

split = df['taglist'].str.split('|', expand=True)
pd.get_dummies(split, prefix='', prefix_sep='').sum(level=0, axis=1)

   1  2  3  4
0  1  1  1  0
1  0  1  1  1