如何将函数应用于GroupBy对象的多个列?

时间:2013-04-29 12:41:42

标签: group-by pandas aggregate

我们假设我们有一个GroupBy对象,该对象是groupby操作应用于DataFrame时获得的:

grouped = data_frame.groupy(['col_1', 'col_2'])

如果我们指定如何组合GroupBy对象中的值以获取单个值,我们可以生成新的数据框。例如:

grouped.agg('col_3':sum, 'col_4':min, 'col_5':user_defined_function)

在上面的例子中,我们使用了将列表(或者更准确地说,系列)作为输入并将单个值作为输出返回的函数。这很好,但我需要的是使用两个系列作为输入。例如,我想从col_3col_4中获取值,并使用它们生成单个值。

例如,我可能想知道col_3col_4中相应值之间的最大绝对差异是什么。

有没有办法在熊猫中做到这一点?

1 个答案:

答案 0 :(得分:3)

如果不为每列指定一个函数,则所有列都将传递给函数(对于apply和agg)。所以:

data_frame.groupy(['col_1', 'col_2']).apply(lambda x: np.max(np.abs(x['col_3'] - x['col_4'])))

这给出了每组的col_3和col_4之间的绝对最大差异。