pandas.core.groupby.SeriesGroupBy.aggregate #
- 系列分组依据。聚合(func = None, * args, engine = None, engine_kwargs = None, ** kwargs)[来源] #
使用指定轴上的一项或多项操作进行聚合。
- 参数:
- func函数、str、list、dict 或 None
用于聚合数据的函数。如果是函数,则必须在传递 Series 或传递给 Series.apply 时起作用。
可接受的组合是:
功能
字符串函数名
函数和/或函数名称列表,例如
[np.sum, 'mean']
无,在这种情况下
**kwargs
与命名聚合一起使用。这里的输出对于 中的每个元素都有一列**kwargs
。列的名称是关键字,而值决定用于计算列中的值的聚合。还可以接受指定的 Numba JIT 函数
engine='numba'
。该引擎仅支持传递单个函数。如果
'numba'
选择引擎,则该函数必须是用户定义的函数,并且values
函数index
签名中的第一个参数和第二个参数分别为 和 。每个组的索引将传递给用户定义的函数,并且可以选择使用。
自 version 2.1.0 起已弃用:传递字典已被弃用,并将在 pandas 的未来版本中提出。相反,传递聚合列表。
- *参数
传递给 func 的位置参数。
- 引擎str,默认无
'cython'
:通过 cython 的 C 扩展运行该函数。'numba'
:通过 numba 的 JIT 编译代码运行该函数。None
:默认'cython'
或全局设置compute.use_numba
- engine_kwargs字典,默认 None
对于
'cython'
发动机,没有可接受的engine_kwargs
对于
'numba'
引擎,引擎可以接受nopython
,nogil
和parallel
字典键。这些值必须是True
或False
。引擎engine_kwargs
的默认值将应用于该函数'numba'
{'nopython': True, 'nogil': False, 'parallel': False}
- **夸格
如果
func
为 None,则**kwargs
用于通过命名聚合定义输出名称和聚合。参见func
条目。否则,关键字参数将传递到 func 中。
- 返回:
- 系列
也可以看看
Series.groupby.apply
逐组应用函数 func 并将结果组合在一起。
Series.groupby.transform
根据给定的函数转换每个组上的系列。
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