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


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


用法:

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

調用函數在每個組上生成一個like-indexed DataFrame,並返回一個與填充了轉換值的原始對象具有相同索引的 DataFrame。

參數

f函數

適用於每個組的函數。

還可以接受指定了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

注意

每個組都被賦予屬性‘name’,以防你需要知道你在哪個組工作。

當前的實現對 f 提出了三個要求:

  • f 必須返回一個與輸入子幀具有相同形狀或可以廣播到輸入子幀形狀的值。例如,如果f 返回一個標量,它將被廣播為與輸入子幀具有相同的形狀。

  • 如果這是一個 DataFrame,f 必須支持子幀中的應用程序column-by-column。如果 f 還支持對整個子幀的應用,則從第二個塊開始使用快速路徑。

  • f 不能改變組。不支持突變,可能會產生意想不到的結果。有關更多詳細信息,請參閱使用用戶定義函數 (UDF) 方法進行變異。

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

例子

>>> df = pd.DataFrame({'A':['foo', 'bar', 'foo', 'bar',
...                           'foo', 'bar'],
...                    'B':['one', 'one', 'two', 'three',
...                           'two', 'two'],
...                    'C':[1, 5, 5, 2, 5, 5],
...                    'D':[2.0, 5., 8., 1., 2., 9.]})
>>> grouped = df.groupby('A')
>>> grouped.transform(lambda x:(x - x.mean()) / x.std())
          C         D
0 -1.154701 -0.577350
1  0.577350  0.000000
2  0.577350  1.154701
3 -1.154701 -1.000000
4  0.577350 -0.577350
5  0.577350  1.000000

轉播結果

>>> grouped.transform(lambda x:x.max() - x.min())
   C    D
0  4  6.0
1  3  8.0
2  4  6.0
3  3  8.0
4  4  6.0
5  3  8.0
>>> grouped[['C', 'D']].transform(lambda x:x.astype(int).max())
   C  D
0  5  8
1  5  9
2  5  8
3  5  9
4  5  8
5  5  9

相關用法


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