pandas.core.groupby.SeriesGroupBy.agg#

SeriesGroupBy.agg(func=None, *args, engine=None, engine_kwargs=None, **kwargs)[源代码]#

沿指定轴使用一个或多个操作进行聚合。

Parameters:
funcfunction, str, list, dict or None

用于聚合数据的函数。如果是一个函数,它必须在传入 Series 时能够工作,或者在传递给 Series.apply 时能够工作。

可接受的组合有:

  • function

  • 字符串函数名

  • 函数和/或函数名的列表,例如 [np.sum, 'mean']

  • None,在这种情况下,**kwargs 与命名聚合一起使用。此处输出包含 **kwargs 的每个元素的列。列的名称是关键字,而值决定了用于计算列中值的聚合。

    使用 engine='numba' 指定时,也可以接受 Numba JIT 函数。使用此引擎仅支持传递单个函数。

    如果选择了 'numba' 引擎,则该函数必须是一个用户定义的函数,其函数签名中的第一个和第二个参数分别为 valuesindex。每个组的索引将传递给用户定义的函数,并可供使用。

自 2.1.0 版本弃用: 传递字典已被弃用,将在未来的 pandas 版本中引发错误。请改用聚合列表。

*args

传递给 func 的位置参数。

enginestr,默认 None
  • 'cython' : 通过 cython 的 C 扩展运行函数。

  • 'numba' : 通过 numba 的 JIT 编译代码运行函数。

  • None : 默认为 'cython' 或全局设置的 compute.use_numba

engine_kwargsdict, 默认为 None
  • 对于 'cython' 引擎,没有可接受的 engine_kwargs

  • 对于 'numba' 引擎,该引擎可以接受 nopythonnogilparallel 字典键。值必须是 TrueFalse'numba' 引擎的默认 engine_kwargs{'nopython': True, 'nogil': False, 'parallel': False},并将应用于函数

**kwargs
  • 如果 func 为 None,则使用 **kwargs 通过命名聚合定义输出名称和聚合。请参阅 func 条目。

  • 否则,将传递给 func 的关键字参数。

Returns:
Series

参见

Series.groupby.apply

按组应用函数 func 并将结果组合在一起。

Series.groupby.transform

根据给定函数对每个组中的 Series 进行转换。

Series.aggregate

沿指定轴使用一个或多个操作进行聚合。

Notes

使用 engine='numba' 时,内部不会有“回退”行为。组数据和组索引将作为 numpy 数组传递给 JITed 用户定义的函数,并且不会尝试其他执行。

修改传入对象的函数可能会导致意外行为或错误,因此不受支持。有关详细信息,请参阅 使用用户定义函数 (UDF) 方法进行变异

在 1.3.0 版本发生变更: 结果的 dtype 将反映传递的 func 的返回值,请参阅下面的示例。

Examples

>>> s = pd.Series([1, 2, 3, 4])
>>> s
0    1
1    2
2    3
3    4
dtype: int64
>>> s.groupby([1, 1, 2, 2]).min()
1    1
2    3
dtype: int64
>>> s.groupby([1, 1, 2, 2]).agg('min')
1    1
2    3
dtype: int64
>>> s.groupby([1, 1, 2, 2]).agg(['min', 'max'])
   min  max
1    1    2
2    3    4

输出列名可以通过将所需的列名和聚合作为关键字参数来控制。

>>> s.groupby([1, 1, 2, 2]).agg(
...     minimum='min',
...     maximum='max',
... )
   minimum  maximum
1        1        2
2        3        4

在 1.3.0 版本发生变更: 结果的 dtype 将反映聚合函数的返回值。

>>> s.groupby([1, 1, 2, 2]).agg(lambda x: x.astype(float).min())
1    1.0
2    3.0
dtype: float64