向pandas 中的分組DataFrame 添加列
在pandas 中使用GroupBy 操作時,向結果添加附加資訊可能會很有幫助數據框。本文探討如何在執行 groupby 聚合後有效地將資料列新增至分組資料幀中的問題。
考慮以下資料幀:
df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})
目標是計算為「c」的每個值鍵入「type」列,並在分組資料框中新增一個資料列,表示每個“c”組的“大小”。執行groupby 聚合後:
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
資料框「g」現在包含每個「c」的「type」計數:
c type t 0 1 m 1 1 1 n 1 2 1 o 1 3 2 m 2 4 2 n 2
新增「size」列,一個選擇是使用map函數:
a.index = a['c'] g['size'] = g['c'].map(a['size'])
但是,還有一種更直接的方法使用transform函數:
g['size'] = df.groupby('c')['type'].transform('size')
使用transform,可以將尺寸列直接加入「g」資料幀,將索引與原始資料幀對齊。產生的資料框:
c type t size 0 1 m 1 3 1 1 n 1 3 2 1 o 1 3 3 2 m 2 4 4 2 n 2 4
以上是如何在 Pandas 中進行 Groupby 操作後向分組 DataFrame 新增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!