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

Convert categorical data (in multiple columns) to binary data

我有一个分类数据 (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 的 pandas。我使用了 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