與 Series groupby 物件不同,使用字典將多個函數應用於 DataFrame groupby 物件並不簡單。但是,有一些有效的方法可以使用以下方法來實現此目的:
使用apply 方法
如果所需的函數在各個列上運行,則利用apply 方法是一個合適的選擇。 apply 方法允許傳遞將整個群組(DataFrame)轉換為另一個物件的函數。例如:
grouped = df.groupby('group') aggregated = grouped.apply(lambda x: pd.Series({ 'a_sum': x['a'].sum(), 'a_max': x['a'].max(), 'b_mean': x['b'].mean(), }))
此方法有效地聚合多個列並傳回具有所需列的 DataFrame。
從 apply 傳回一個系列
當處理需要互動的多個欄位時,不能使用 agg 方法,因為它隱含地將 Series 傳遞給聚合函數。相反,可以建立一個傳回 Series 的自訂函數。例如:
def aggregate_group(x): return pd.Series({ 'a_sum': x['a'].sum(), 'b_mean': x['b'].mean(), 'c_d_prod': (x['c'] * x['d']).sum() }) grouped = df.groupby('group') result = grouped.apply(aggregate_group)
此方法允許將多個函數應用於多個分組列並在一個步驟中傳回結果。
自訂函數名稱
如果需要,可以使用 __name__ 屬性為函數指派自訂名稱。只需在定義函數後將 __name__ 設定為所需的名稱,這將提高生成列的清晰度。
值得注意的是,與上述方法相比,使用循環迭代 groupby 物件通常效率較低。 Pandas 針對向量化操作進行了最佳化,使這些內建方法成為高效組級分析的首選方法。
以上是如何有效地將多個函數應用於 Pandas 中的分組 DataFrame 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!