将分类数据(多列)转换为二进制数据
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
我有一个分类数据 (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