python

时间:2019-02-03 11:18:59

标签: python one-hot-encoding

我想对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

我该怎么办?

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

使用pd.crosstab()

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