當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.core.groupby.DataFrameGroupBy.aggregate用法及代碼示例


用法:

DataFrameGroupBy.aggregate(func=None, *args, engine=None, engine_kwargs=None, **kwargs)

在指定軸上使用一項或多項操作進行聚合。

參數

func函數、str、列表或字典

用於聚合數據的函數。如果是函數,則必須在傳遞 DataFrame 或傳遞給 DataFrame.apply 時工作。

接受的組合是:

  • function

  • 字符串函數名

  • 函數和/或函數名稱列表,例如[np.sum, 'mean']

  • 軸標簽的字典 -> 函數、函數名稱或此類列表。

還可以接受指定了engine='numba' 的 Numba JIT 函數。此引擎僅支持傳遞單個函數。

如果選擇'numba' 引擎,該函數必須是用戶定義的函數,函數簽名中的第一個和第二個參數分別是valuesindex。每個組的索引將傳遞給用戶定義的函數,並且可以選擇使用。

*args

要傳遞給 func 的位置參數。

enginestr,默認無
  • 'cython' :通過 cython 的 C-extensions 運行函數。

  • 'numba' :通過 numba 中的 JIT 編譯代碼運行函數。

  • None :默認為 'cython' 或全局設置 compute.use_numba

engine_kwargs字典,默認無
  • 對於'cython' 引擎,沒有接受的engine_kwargs

  • 對於 'numba' 引擎,引擎可以接受 nopythonnogilparallel 字典鍵。這些值必須是 TrueFalse'numba' 引擎的默認 engine_kwargs{'nopython':True, 'nogil':False, 'parallel':False} 並將應用於函數

**kwargs

要傳遞給 func 的關鍵字參數。

返回

DataFrame

注意

使用 engine='numba' 時,內部不會有 “fall back” 行為。組數據和組索引將作為 numpy 數組傳遞給 JITed 用戶定義函數,並且不會嘗試替代執行嘗試。

改變傳遞對象的函數可能會產生意外行為或錯誤,因此不受支持。有關更多詳細信息,請參閱使用用戶定義函數 (UDF) 方法進行變異。

例子

>>> 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 支持“named aggregation”

>>> 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 提供帶有字段['column', 'aggfunc']pandas.NamedAgg 命名元組,以便更清楚地了解參數是什麽。像往常一樣,聚合可以是可調用的或字符串別名。

有關更多信息,請參閱命名聚合。

>>> df.groupby("A")[["B"]].agg(lambda x:x.astype(float).min())
      B
A
1   1.0
2   3.0

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.core.groupby.DataFrameGroupBy.aggregate。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。