反转 pandas 中的get_dummies编码 [英] Reverse a get_dummies encoding in pandas
本文介绍了反转 pandas 中的get_dummies编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
列名是:ID,1、2、3、4、5、6、7、8、9.
Column names are: ID,1,2,3,4,5,6,7,8,9.
col值为0或1
我的数据框如下:
ID 1 2 3 4 5 6 7 8 9
1002 0 1 0 1 0 0 0 0 0
1003 0 0 0 0 0 0 0 0 0
1004 1 1 0 0 0 0 0 0 0
1005 0 0 0 0 1 0 0 0 0
1006 0 0 0 0 0 1 0 0 0
1007 1 0 1 0 0 0 0 0 0
1000 0 0 0 0 0 0 0 0 0
1009 0 0 1 0 0 0 1 0 0
我想要ID前面的列名,其中行的值为1.
I want the column names in front of the ID where the value in a row is 1.
我想要的数据框应如下所示:
The Dataframe i want should look like this:
ID Col2
1002 2 // has 1 at Col(2) and Col(4)
1002 4
1004 1 // has 1 at col(1) and col(2)
1004 2
1005 5 // has 1 at col(5)
1006 6 // has 1 at col(6)
1007 1 // has 1 at col(1) and col(3)
1007 3
1009 3 // has 1 at col(3) and col(7)
1009 7
请帮助我,在此先感谢
推荐答案
set_index
+ stack
,默认情况下堆栈会掉落
set_index
+ stack
, stack will dropna by default
df.set_index('ID',inplace=True)
df[df==1].stack().reset_index().drop(0,1)
Out[363]:
ID level_1
0 1002 2
1 1002 4
2 1004 1
3 1004 2
4 1005 5
5 1006 6
6 1007 1
7 1007 3
8 1009 3
9 1009 7
这篇关于反转 pandas 中的get_dummies编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文