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