假设我们有一个 GroupBy
对象,该对象是通过应用于 DataFrame
的 groupby
操作而获得的:
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
中相应值之间的最大绝对差是多少。
有没有办法在 pandas 中做到这一点?
最佳答案
如果您没有为每列指定一个函数,则所有列都将传递给该函数(对于 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 之间的绝对最大差异。
关于group-by - 如何将函数应用于 GroupBy 对象的多个列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278902/