将分类数据(多列)转换为二进制数据



我有一个分类数据(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

相关内容

  • 没有找到相关文章

最新更新