【问题标题】:How to apply a function to several columns of a GroupBy object?如何将函数应用于 GroupBy 对象的多个列?
【发布时间】:2013-04-23 03:13:28
【问题描述】:

让我们假设我们有一个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 中对应值之间的最大绝对差。

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

【问题讨论】:

    标签: group-by pandas aggregate


    【解决方案1】:

    如果您没有为每列指定一个函数,则所有列都将传递给该函数(适用于 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 之间的绝对最大差异。

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多