Python 将分类数据(多列)转换为二进制数据
我有一个分类数据(测试数据),如: 我想将其转换为二进制数据,如:Python 将分类数据(多列)转换为二进制数据,python,pandas,dataframe,scikit-learn,categorical-data,Python,Pandas,Dataframe,Scikit Learn,Categorical Data,我有一个分类数据(测试数据),如: 我想将其转换为二进制数据,如: 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
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\u dummies
函数,但是这个函数不能在整个数据帧上工作 您可以先将“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
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