Python 数据清理--按行聚合

Python 数据清理--按行聚合,python,pandas,Python,Pandas,假设我有一个熊猫数据帧,如下所示: lkey value_x rkey value_y 0 foo nan foo 5 1 foo nan foo 8 2 foo 5 foo 5 3 foo 5 foo 8 4 bar nan bar 6 5 baz 13 baz 7 我希望清理数据以获得结果数据帧: lk

假设我有一个熊猫数据帧,如下所示:

  lkey  value_x rkey  value_y
0  foo      nan  foo        5
1  foo      nan  foo        8
2  foo        5  foo        5
3  foo        5  foo        8
4  bar      nan  bar        6
5  baz       13  baz        7
我希望清理数据以获得结果数据帧:

  lkey   rkey   value
0  foo   foo        5
1  foo   foo        8
2  foo   foo        5
3  foo   foo        8
4  bar   bar        6
5  baz   baz       13
其中value现在是基于value_x和value_y(在本例中为最大值)的任意值列。我怎样才能做到这一点


我已经查看了agg、groupby、apply、map等。您可以在轴1上找到max

df['value'] = df1[['value_x', 'value_y']].max(1)
或者更一般的

df['value'] = df.filter(like = 'value').max(1)
您可以使用

df.drop(['value_x', 'value_y'], axis = 1, inplace = True)
编辑:如果值是字符串

df[['value_x', 'value_y']].apply(lambda x: x[0] if len(x[0]) > len(x[1]) else x[1], axis = 1)

如果value_x和value_y是字符串,我想得到最大长度的值,该怎么办?我尝试过做类似的事情,但没有成功。如果值是字符串,请尝试df['value\ux','value\uy']]。应用(lambda x:x[0]如果len(x[0])>len(x[1]),否则x[1],axis=1)