首页 > 解决方案 > 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

我想清理我的数据以获得结果数据框:

  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 等。

标签: pythonpandas

解决方案


您可以在轴 1 上找到最大值。

df['value'] = df1[['value_x', 'value_y']].max(1)

或者更通用的,

df['value'] = df.filter(like = 'value').max(1)

您可以使用删除 value_x 和 value_y

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)

推荐阅读