【发布时间】:2018-04-23 00:06:22
【问题描述】:
我有一些数据正在尝试根据值进行合并。随着时间的推移,命名约定发生了变化,“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
【问题讨论】:
标签: python-3.x pandas join