如何在python中将文本转换为多个列?

时间:2018-03-07 02:51:10

标签: python pandas

现在假设我有以下pandas数据框:

id text
1  A B C
2  B D
3  A D

我希望得到以下结果:

id A B C D
1  1 1 1 0
2  0 1 0 1
3  1 0 0 1

我不知道如何描述这种转换,它看起来像热门编码,但它们应该完全不同。

任何人都知道如何进行这种转换以及这种转变的名称是什么?

2 个答案:

答案 0 :(得分:3)

str.get_dummies

这样的东西
pd.concat([df['id'],df.text.str.get_dummies(sep=' ')],1)
Out[249]: 
   id  A  B  C  D
0   1  1  1  1  0
1   2  0  1  0  1
2   3  1  0  0  1

答案 1 :(得分:1)

一种方法是通过pd.get_dummies

df = pd.DataFrame({'id': [1, 2, 3],
                   'text': ['A B C', 'B D', 'A D']})

df['text'] = df['text'].str.split(' ').str.join('|')

df = df.join(df['text'].str.get_dummies()).drop('text', 1)

#    id  A  B  C  D
# 0   1  1  1  1  0
# 1   2  0  1  0  1
# 2   3  1  0  0  1