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

标签 group-by pandas aggregate

假设我们有一个 GroupBy 对象,该对象是通过应用于 DataFramegroupby 操作而获得的:

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 中相应值之间的最大绝对差是多少。

有没有办法在 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/

相关文章:

python - Pandas:如何为每组值分配标签?

r - 根据唯一日期计算记录

mysql - 按年份区间对行进行分组

sql - 如何从行中获取数据并将其放入单个字段中?

mysql - 选择给定日期范围内的所有月份,包括具有 0 值的月份

mysql - Order By 和 Group By

python - 从数据框中的组中删除在特定列中具有最小值的行

python - 仅在 pandas 系列日期时间索引中重新设置日期

r - 在 R 中逐个折叠数据

R聚合错误: count distinct