pandas.core.groupby.DataFrameGroupBy.aggregate#
- DataFrameGroupBy.aggregate(func=None, *args, engine=None, engine_kwargs=None, **kwargs)[源代码]#
使用指定轴上的一个或多个操作进行聚合。
- 参数
- func函数、字符串、列表或字典
用于聚合数据的函数。如果是函数,则在传递DataFrame或传递给DataFrame.Apply时必须工作。
可接受的组合包括:
功能
字符串函数名
函数和/或函数名称列表,例如
[np.sum, 'mean']
轴标签的字典->函数、函数名称或此类列表。
还可以接受Numba JIT函数
engine='numba'
指定的。此引擎仅支持传递单个函数。如果
'numba'
选择引擎,则该函数必须是用户定义的函数values
和index
分别作为函数签名中的第一个和第二个参数。每个组的索引将被传递给用户定义的函数,并且可以选择使用。在 1.1.0 版更改.
- *args
要传递给函数的位置参数。
- engine字符串,默认为无
'cython'
:从cython通过C扩展运行函数。'numba'
:通过来自Numba的JIT编译代码运行函数。None
: Defaults to'cython'
or globally settingcompute.use_numba
1.1.0 新版功能.
- engine_kwargsDict,默认无
为
'cython'
发动机,有没有接受engine_kwargs
为
'numba'
发动机,发动机可以接受nopython
,nogil
和parallel
词典的关键字。这些值必须是True
或False
。默认设置engine_kwargs
对于'numba'
引擎是{{'nopython': True, 'nogil': False, 'parallel': False}}
并将应用于该函数
1.1.0 新版功能.
- **kwargs
要传递给函数的关键字参数。
- 退货
- DataFrame
参见
DataFrame.groupby.apply
按组应用函数,并将结果组合在一起。
DataFrame.groupby.transform
使用指定轴上的一个或多个操作进行聚合。
DataFrame.aggregate
根据给定函数对每组上的级数进行变换。
注意事项
在使用时
engine='numba'
,在内部不会有“后退”的行为。组数据和组索引将作为NumPy数组传递给JITed用户定义函数,不会尝试其他执行尝试。改变传递的对象的函数可能会产生意外的行为或错误,因此不受支持。看见 使用用户定义函数(UDF)方法进行变异 了解更多详细信息。
在 1.3.0 版更改: 结果数据类型将反映传递的
func
,请参见下面的示例。示例
>>> df = pd.DataFrame( ... { ... "A": [1, 1, 2, 2], ... "B": [1, 2, 3, 4], ... "C": [0.362838, 0.227877, 1.267767, -0.562860], ... } ... )
>>> df A B C 0 1 1 0.362838 1 1 2 0.227877 2 2 3 1.267767 3 2 4 -0.562860
聚合是针对每一列的。
>>> df.groupby('A').agg('min') B C A 1 1 0.227877 2 3 -0.562860
多个聚合
>>> df.groupby('A').agg(['min', 'max']) B C min max min max A 1 1 2 0.227877 0.362838 2 3 4 -0.562860 1.267767
选择要聚合的列
>>> df.groupby('A').B.agg(['min', 'max']) min max A 1 1 2 2 3 4
每列不同的聚合
>>> df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'}) B C min max sum A 1 1 2 0.590715 2 3 4 0.704907
为了控制每个列具有不同聚合的输出名称,Pandas支持“命名聚合”
>>> df.groupby("A").agg( ... b_min=pd.NamedAgg(column="B", aggfunc="min"), ... c_sum=pd.NamedAgg(column="C", aggfunc="sum")) b_min c_sum A 1 1 0.590715 2 3 0.704907
关键字是 输出 列名
这些值是元组,其第一个元素是要选择的列,第二个元素是要应用于该列的聚合。Pandas提供了
pandas.NamedAgg
带字段的命名元组['column', 'aggfunc']
为了更清楚地说明论点是什么。通常,聚合可以是可调用的别名或字符串别名。
看见 命名聚合 想要更多。
在 1.3.0 版更改: 结果数据类型将反映聚合函数的返回值。
>>> df.groupby("A")[["B"]].agg(lambda x: x.astype(float).min()) B A 1 1.0 2 3.0