我想对python 3中的分类功能实现一种热编码。 我注意到,很少有ID具有多个分类值。
我的桌子:
id type
13 A
13 B
2 A
34 C
34 A
34 B
我的愿望输出:
id type@A type@B type@C
13 1 1 0
2 1 0 0
34 1 1 1
我该怎么办?
答案 0 :(得分:2)
如果可以使用熊猫,可以将数据存储在数据框中(例如,名称为df
)并使用:
pd.crosstab(df['id'],df['type']).rename_axis(None,axis=1)
以下示例:
import pandas as pd
d={'id': {0: 13, 1: 13, 2: 2, 3: 34, 4: 34, 5: 34},
'type': {0: 'A', 1: 'B', 2: 'A', 3: 'C', 4: 'A', 5: 'B'}}
df=pd.DataFrame(d)
print(df)
id type
0 13 A
1 13 B
2 2 A
3 34 C
4 34 A
5 34 B
df_new = pd.crosstab(df['id'],df['type']).rename_axis(None,axis=1).add_prefix('type@')
print(df_new)
type@A type@B type@C
id
2 1 0 0
13 1 1 0
34 1 1 1