pandas.core.groupby.SeriesGroupBy.aggregate#
- SeriesGroupBy.aggregate(func=None, *args, engine=None, engine_kwargs=None, **kwargs)[源代码][源代码]#
使用一个或多个操作进行聚合。
- 参数:
- 函数函数, 字符串, 列表, 字典 或 无
用于聚合数据的函数。如果是一个函数,必须能够在传递一个 Series 时工作,或者在传递给 Series.apply 时工作。
接受的组合是:
函数
字符串函数名称
函数列表和/或函数名,例如
[np.sum, 'mean']如果没有指定,则使用
**kwargs进行命名聚合。这里输出有一列对应**kwargs中的每个元素。列名是关键字,而值决定了用于计算列中值的聚合方式。也可以接受一个指定了
engine='numba'的 Numba JIT 函数。此引擎仅支持传递单个函数。如果选择了
'numba'引擎,该函数必须是用户定义的函数,并且在函数签名中values和index分别作为第一个和第二个参数。每个组的索引将被传递给用户定义的函数,并可选择用于使用。
自 2.1.0 版本弃用: 传递字典已被弃用,并且在 pandas 的未来版本中将会引发错误。请传递一个聚合列表。
- *args
传递给 func 的位置参数。
- 引擎str, 默认为 None
'cython': 通过cython的C扩展运行函数。'numba': 通过来自 numba 的 JIT 编译代码运行函数。None: 默认为'cython'或全局设置compute.use_numba
- engine_kwargs字典, 默认为 None
对于
'cython'引擎,没有接受的engine_kwargs对于
'numba'引擎,引擎可以接受nopython、nogil和parallel字典键。这些值必须是True或False。'numba'引擎的默认engine_kwargs是{'nopython': True, 'nogil': False, 'parallel': False},并将应用于函数。
- **kwargs
如果
func是 None,**kwargs用于通过命名聚合定义输出名称和聚合。参见func条目。否则,要传递给 func 的关键字参数。
- 返回:
- 系列
参见
Series.groupby.apply按组应用函数 func 并将结果合并在一起。
Series.groupby.transform基于给定的函数转换每个组中的Series。
Series.aggregate使用一个或多个操作进行聚合。
备注
当使用
engine='numba'时,内部不会有“回退”行为。组数据和组索引将作为 numpy 数组传递给 JITed 用户定义函数,并且不会尝试其他执行方式。修改传递对象的函数可能会产生意外行为或错误,并且不受支持。更多详情请参见 使用用户定义函数 (UDF) 方法进行变异。
在 1.3.0 版本发生变更: 生成的 dtype 将反映传递的
func的返回值,请参见下面的示例。例子
>>> 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