pandas.core.groupby.DataFrameGroupBy.aggregate # DataFrameGroupBy。聚合(func = None, * args, engine = None, engine_kwargs = None, ** kwargs)[来源] # 使用指定轴上的一项或多项操作进行聚合。 参数: func函数、str、list、dict 或 None用于聚合数据的函数。如果是函数,则必须在传递 DataFrame 或传递给 DataFrame.apply 时起作用。 可接受的组合是: 功能 字符串函数名 函数和/或函数名称列表,例如[np.sum, 'mean'] 轴标签的字典 -> 函数、函数名称或此类列表。 无,在这种情况下**kwargs与命名聚合一起使用。这里的输出对于 中的每个元素都有一列**kwargs。列的名称是关键字,而值决定用于计算列中的值的聚合。 还可以接受指定的 Numba JIT 函数 engine='numba'。该引擎仅支持传递单个函数。 如果'numba'选择引擎,则该函数必须是用户定义的函数,并且values函数index签名中的第一个参数和第二个参数分别为 和 。每个组的索引将传递给用户定义的函数,并且可以选择使用。 *参数传递给 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 中。 返回: 数据框 也可以看看 DataFrame.groupby.apply逐组应用函数 func 并将结果组合在一起。 DataFrame.groupby.transform根据给定的函数转换每个组上的系列。 DataFrame.aggregate使用指定轴上的一项或多项操作进行聚合。 笔记 使用时engine='numba',内部不会有“回退”行为。组数据和组索引将作为 numpy 数组传递给 JITed 用户定义的函数,并且不会尝试其他执行尝试。 改变传递的对象的函数可能会产生意外的行为或错误,因此不受支持。 有关更多详细信息,请参阅使用用户定义函数 (UDF) 方法进行变异。 版本 1.3.0 中更改:生成的 dtype 将反映传递的返回值func,请参阅下面的示例。 例子 >>> data = {"A": [1, 1, 2, 2], ... "B": [1, 2, 3, 4], ... "C": [0.362838, 0.227877, 1.267767, -0.562860]} >>> df = pd.DataFrame(data) >>> 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(lambda x: sum(x) + 2) B C A 1 5 2.590715 2 9 2.704907 每列不同的聚合 >>> 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 关键字是输出列名称 这些值是元组,其第一个元素是要选择的列,第二个元素是要应用于该列的聚合。 Pandaspandas.NamedAgg为namedtuple 提供了字段, 以便更清楚地说明参数是什么。像往常一样,聚合可以是可调用的或字符串别名。['column', 'aggfunc'] 有关更多信息,请参阅命名聚合。 版本 1.3.0 中更改:生成的 dtype 将反映聚合函数的返回值。 >>> df.groupby("A")[["B"]].agg(lambda x: x.astype(float).min()) B A 1 1.0 2 3.0