首頁 > 後端開發 > Python教學 > 如何有效地將多個函數應用於 Pandas 中的分組 DataFrame 欄位?

如何有效地將多個函數應用於 Pandas 中的分組 DataFrame 欄位?

DDD
發布: 2024-12-16 15:47:14
原創
354 人瀏覽過

How Can I Efficiently Apply Multiple Functions to Grouped DataFrame Columns in Pandas?

有效地將多個函數應用於分組列

與 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中文網其他相關文章!

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