Python 按二进制列值重塑数据帧

Python 按二进制列值重塑数据帧,python,pandas,dataframe,numpy,reshape,Python,Pandas,Dataframe,Numpy,Reshape,无法理解如何通过几个二进制列值将我的数据帧重塑为新的数据帧 输入: data code a b c 2016-01-07 foo 0 0 0 2016-01-12 bar 0 0 1 2016-01-03 gar 0 1 0 2016-01-22 foo 1 1 0 2016-01-26 bar 1 1 0 我想通过二进制值来重塑,即a/b/c列的形状,如果它们的值==1,我

无法理解如何通过几个二进制列值将我的数据帧重塑为新的数据帧

输入:

data         code    a  b   c

2016-01-07   foo     0  0   0
2016-01-12   bar     0  0   1
2016-01-03   gar     0  1   0
2016-01-22   foo     1  1   0
2016-01-26   bar     1  1   0
我想通过二进制值来重塑,即a/b/c列的形状,如果它们的值==1,我需要每次新列 所有的数据

预期产出:

         data       code        
  a   2016-01-22    foo      
  a   2016-01-26    bar       
  b   2016-01-03    gar     
  b   2016-01-22    foo      
  b   2016-01-26    bar       
  c   2016-01-12    bar       
从早上就在这里受挫了,非常感谢你的帮助

与过滤一起使用
1
in,用于过滤后删除列:

df = df.melt(['data','code'], var_name='type')
df = df[df.pop('value').eq(1)]
print (df)
          data code type
3   2016-01-22  foo    a
4   2016-01-26  bar    a
7   2016-01-03  gar    b
8   2016-01-22  foo    b
9   2016-01-26  bar    b
11  2016-01-12  bar    c

节省我的时间!如何添加每种类型的编号的附加列?(对于所有a-2,b-3,c-1)?@unkind58-当然,你可以检查@unkind58-它的意思是
df['size']=df.groupby(['type'])]['type'].transform('size')
df['number']=df['type'].map(dict(a=1,b=2,c=3))
@adirabargil-它为新列重复计数