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)