我有一个分类数据(test_data),如:
s.no Product_Category_1 Product_Category_2 Product_Category_3
0 3 NaN NaN
1 1 6 14
2 12 NaN NaN
3 12 14 NaN
4 8 NaN NaN
5 1 2 NaN
我想将其转换为二进制数据,如:
s.no 1 2 3 6 8 12 14
0 0 0 1 0 0 0 0
1 1 0 0 1 0 0 1
2 0 0 0 0 0 1 0
3 0 0 0 0 0 1 1
4 0 0 0 0 1 0 0
5 1 1 0 0 0 0 0
我可以理解我必须使用一个热编码。我正在使用python的熊猫。我使用了get_dummies
函数,但此函数不适用于整个DataFrame。
答案 0 :(得分:1)
您可以设置' s.no'作为索引的第一个(如果它还没有)并且取消堆栈以将列放入系列。然后,您可以使用get_dummies
并将多索引的级别相加以获得结果:
df = df.set_index('s.no')
pd.get_dummies(df.unstack()).sum(level=1)
产生:
1 2 3 6 8 12 14
s.no
0 0 0 1 0 0 0 0
1 1 0 0 1 0 0 1
2 0 0 0 0 0 1 0
3 0 0 0 0 0 1 1
4 0 0 0 0 1 0 0
5 1 1 0 0 0 0 0