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

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

Barbara Streisand
Barbara Streisand原創
2024-12-08 05:53:10552瀏覽

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