Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将分类数据(多列)转换为二进制数据_Python_Pandas_Dataframe_Scikit Learn_Categorical Data - Fatal编程技术网

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