首页  >  文章  >  后端开发  >  何时使用 Pandas apply 与transform 进行分组数据操作?

何时使用 Pandas apply 与transform 进行分组数据操作?

Susan Sarandon
Susan Sarandon原创
2024-11-11 08:02:02839浏览

When to Use Pandas apply vs transform for Grouped Data Operations?

在Pandas中,apply和transform都可以用来对分组数据执行操作。但是,这两种方法之间存在一些关键差异。

输入类型

  • apply 将每个组的整个 DataFrame 作为输入传递给自定义函数。
  • transform 将每个组的 DataFrame 的每一列单独传递为自定义的输入函数。

输出类型

  • apply 可以返回标量、Series 或 DataFrame。
  • transform 必须返回序列(例如,系列、数组或列表),其长度与group.

Transformation

  • apply 可用于在 DataFrame 上执行转换,例如聚合值、过滤行或修改数据。
  • transform 主要用于在组内执行按行操作,例如缩放值或添加新值

示例

考虑以下 DataFrame:

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C': randn(8), 'D': randn(8)})

使用 apply 从每个组中的 D 列中减去 C 列:

df.groupby('A').apply(lambda x: (x['C'] - x['D']))

要从每组内的 D 列中减去 C 列,请使用转换:

df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())

请注意,传递给transform的lambda函数返回C和D之间差异的平均值,从而产生与原始DataFrame具有相同形状的转换列。

何时使用 apply 与 transform:

  • 当需要访问组内的多个列或执行时使用 apply导致不同形状输出的操作(例如,聚合值或过滤行)。
  • 当您需要在组内执行按行操作并希望使用以下值创建新列或变量时,请使用转换:与输入数据形状相同。

以上是何时使用 Pandas apply 与transform 进行分组数据操作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn