如何將多個函數應用於多個分組列
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中文網其他相關文章!