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


Python pandas.core.groupby.GroupBy.apply用法及代碼示例


用法:

GroupBy.apply(func, *args, **kwargs)

應用函數 func group-wise 並將結果組合在一起。

傳遞給apply 的函數必須將數據幀作為其第一個參數並返回數據幀、係列或標量。然後apply 將負責將結果重新組合到一個數據幀或係列中。 apply 因此是一種高度靈活的分組方法。

雖然 apply 是一種非常靈活的方法,但它的缺點是使用它可能比使用更具體的方法(如 aggtransform )慢很多。 Pandas 提供了多種方法,這些方法比使用 apply 用於特定目的要快得多,因此在達到 apply 之前嘗試使用它們。

參數

func可調用的

將數據幀作為其第一個參數並返回數據幀、序列或標量的可調用對象。此外,可調用對象可以采用位置和關鍵字參數。

args, kwargs元組和字典

要傳遞給 func 的可選位置和關鍵字參數。

返回

appliedSeries或DataFrame

注意

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

例子

>>> df = pd.DataFrame({'A':'a a b'.split(),
...                    'B':[1,2,3],
...                    'C':[4,6,5]})
>>> g = df.groupby('A')

請注意,g 有兩個組,ab。通過各種方式調用apply,可以得到不同的分組結果:

示例 1:下麵傳遞給 apply 的函數將 DataFrame 作為其參數並返回一個 DataFrame。 apply 將每個組的結果組合到一個新的 DataFrame 中:

>>> g[['B', 'C']].apply(lambda x:x / x.sum())
          B    C
0  0.333333  0.4
1  0.666667  0.6
2  1.000000  1.0

示例 2:傳遞給 apply 的函數將 DataFrame 作為其參數並返回一個 Series。 apply 將每個組的結果組合到一個新的 DataFrame 中。

>>> g[['B', 'C']].apply(lambda x:x.astype(float).max() - x.min())
     B    C
A
a  1.0  2.0
b  0.0  0.0

示例 3:傳遞給 apply 的函數將 DataFrame 作為其參數並返回一個標量。 apply 將每個組的結果組合成一個係列,包括根據需要設置索引:

>>> g.apply(lambda x:x.C.max() - x.B.min())
A
a    5
b    2
dtype:int64

相關用法


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