现在假设我有以下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
我不知道如何描述这种转换,它看起来像热门编码,但它们应该完全不同。
任何人都知道如何进行这种转换以及这种转变的名称是什么?
答案 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