maxframe.dataframe.groupby.GroupBy.agg#

GroupBy.agg(func=None, method='auto', *args, **kwargs)#

使用一个或多个操作对分组数据进行聚合。

参数:
  • groupby (MaxFrame Groupby) -- 分组数据。

  • func (str or list-like) -- 聚合函数。

  • method ({'auto', 'shuffle', 'tree'}, default 'auto') -- 'tree' 方法提供更好的性能,如果聚合结果非常大,推荐使用 'shuffle','auto' 在分布式模式下将使用 'shuffle' 方法,在本地模式下使用 'tree'。

返回:

聚合结果。

返回类型:

Series or DataFrame

示例

>>> import maxframe.dataframe as md
>>> df = md.DataFrame(
...     {
...         "A": [1, 1, 2, 2],
...         "B": [1, 2, 3, 4],
...         "C": [0.362838, 0.227877, 1.267767, -0.562860],
...     }
... ).execute()
   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').execute()
   B         C
A
1  1  0.227877
2  3 -0.562860

多个聚合。

>>> df.groupby('A').agg(['min', 'max']).execute()
    B             C
  min max       min       max
A
1   1   2  0.227877  0.362838
2   3   4 -0.562860  1.267767

每列不同的聚合

>>> df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'}).execute()
    B             C
  min max       sum
A
1   1   2  0.590715
2   3   4  0.704907

为了控制每列不同聚合的输出名称,MaxFrame 支持“命名聚合”

>>> from maxframe.dataframe import NamedAgg
>>> df.groupby("A").agg(
...  b_min=NamedAgg(column="B", aggfunc="min"),
...  c_sum=NamedAgg(column="C", aggfunc="sum")).execute()
   b_min     c_sum
A
1      1  0.590715
2      3  0.704907