我们假设我们有一个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_3
和col_4
中获取值,并使用它们生成单个值。
例如,我可能想知道col_3
和col_4
中相应值之间的最大绝对差异是什么。
有没有办法在熊猫中做到这一点?
答案 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之间的绝对最大差异。