首頁 > 後端開發 > Python教學 > 如何將多個函數應用於 Pandas GroupBy 中的多個欄位?

如何將多個函數應用於 Pandas GroupBy 中的多個欄位?

Barbara Streisand
發布: 2024-12-08 05:53:10
原創
577 人瀏覽過

How to Apply Multiple Functions to Multiple Columns in Pandas GroupBy?

如何將多個函數應用於多個分組列

Pandas 中的 Groupby 操作允許基於特定列或鍵聚合資料。但是,在處理複雜資料集時,可能需要對分組資料中的不同列執行多個操作。

使用字典進行系列分組

對於Series groupby對象,可以使用字典來指定多個函數並輸出列名,如下所示:

grouped['D'].agg({'result1' : np.sum,
   .....:                   'result2' : np.mean})
登入後複製

這個但是,該方法不適用於DataFrame groupby 對象,因為它期望字典鍵代表應用函數的列名稱。

帶有 Apply 的自訂函數

要解決由於這個限制,您可以利用 apply 方法,該方法將 DataFrame 隱含傳遞給應用程式。透過定義自訂函數並傳回Series 或多重索引Series,您可以對每個群組中的多個欄位執行多項操作:

傳回Series:

def f(x):
    d = {}
    d['a_sum'] = x['a'].sum()
    d['a_max'] = x['a'].max()
    d['b_mean'] = x['b'].mean()
    d['c_d_prodsum'] = (x['c'] * x['d']).sum()
    return pd.Series(d, index=['a_sum', 'a_max', 'b_mean', 'c_d_prodsum'])

df.groupby('group').apply(f)
登入後複製

使用MultiIndex傳回一個系列:

def f_mi(x):
        d = []
        d.append(x['a'].sum())
        d.append(x['a'].max())
        d.append(x['b'].mean())
        d.append((x['c'] * x['d']).sum())
        return pd.Series(d, index=[['a', 'a', 'b', 'c_d'], 
                                   ['sum', 'max', 'mean', 'prodsum']])

df.groupby('group').apply(f_mi)
登入後複製

這種方法提供了對分組資料執行複雜聚合的靈活方式,允許對每個群組內的多個欄位進行多種操作。

以上是如何將多個函數應用於 Pandas GroupBy 中的多個欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板