将两个pandas列与基于值组合在一起

时间:2017-11-09 20:50:38

标签: python-3.x pandas join

我有一些数据,我试图根据值进行合并。随着时间的推移,命名约定发生了变化,并且" 0"被添加到列名称中,导致两列捕获相同的数据;例如:

df4 = pd.DataFrame({'MSG235': [1,0,1,0,0], 'MSG0235': [0,0,0,1,1]})

df4

MSG0235  MSG235
   0       1 
   0       0 
   0       1 
   1       0 
   1       0 

如何将这些列组合起来,如果其中任何一个(或两个)等于1,结果将为1,如果两个都只有0,结果将为0?

我正在寻找类似的东西:

 MSG235
   1 
   0 
   1 
   1 
   1 

我试过了:

df4.rename(columns = {'MSG0235': 'MSG235'}, inplace = True)

def col_join(x): 
    return ''.join(x[x.notnull()].astype(str))

df4.groupby(level = 0, axis = 1).apply(lambda x: x.apply(col_join, axis = 1))

结果是:

MSG235
  01 
  00 
  01 
  10 
  10 

1 个答案:

答案 0 :(得分:2)

你可以尝试

df4['MSG235'] = (df4.any(1) == 1).astype(int)
df4.drop('MSG0235', axis = 1, inplace = True)

    MSG235
0   1
1   0
2   1
3   1
4   1