我有一个分类数据(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
我可以理解,我必须使用一个热编码。我在用蟒蛇的熊猫。我使用了get_dummies
函数,但这个函数不能在整个DataFrame上工作。
您可以先将"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