首頁  >  文章  >  後端開發  >  如何使用 df.groupby().transform() 有效地組合分組資料框?

如何使用 df.groupby().transform() 有效地組合分組資料框?

Barbara Streisand
Barbara Streisand原創
2024-10-19 12:29:29272瀏覽

How to Combine Grouped Dataframes Effectively Using df.groupby().transform()?

將Groupby Dataframe 與df.groupby().transform() 結合

在處理pandas dataframe 時,通常需要對以下物件執行操作資料子集,例如對值進行分組和計算統計資料。但是,將這些操作的結果合併回原始資料幀可能會很麻煩。

要解決此挑戰,請考慮以下場景:

問題:您有一個包含兩列的資料框,「c」和「type」。您的目標是計算每個“c”的“type”值,並在資料框中新增大小為“c”的欄位。

方法 1(使用地圖):

一種方法是使用 map() 函數,它將函數應用於 Series 中的每個值。在這種情況下,您可以將「c」的大小對應到資料框中對應的「c」值:

<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t')
a = df.groupby('c').size().reset_index(name='size')
a.index = a['c']
g['size'] = g['c'].map(a['size'])</code>

此方法有效,但涉及多個步驟和手動索引對齊。

方法2(使用Transform):

更直接的解決方案是使用pandas的transform()函數,它將函數應用於資料幀的每一行,傳回一個與原始索引。您可以使用轉換將“c”的大小直接添加到資料框中:

<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t')
g['size'] = df.groupby('c')['type'].transform('size')</code>

這種方法消除了單獨的大小計算和索引對齊的需要,從而產生更簡潔和高效的解決方案。

以上是如何使用 df.groupby().transform() 有效地組合分組資料框?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn