2017-07-28 11 views
0

データフレームにgroupby-applyを実行し、その結果を元のデータフレームとマージすることがよくあります。ここに例があります。 dfに列AとBがあるとします。この列の値が、現在の行と同じ列Aの値を持つすべての行の合計である別の列を追加したいとします。以下はその仕事ですが、明らかに準最適ですパンダ:join/mergeでgroupby-applyを結合する

df.join(df.groupby('A')['B'].sum(), on='A', rsuffix='_sum') 

元のインデックスをgroupby-sumに保存することはできますか?

答えて

5

あなたはgroupby.transform使用することができます。

df['B_sum'] = df.groupby('A').B.transform('sum') 

デモ

df = pd.DataFrame({ 
     'A': [1,1,2,2], 
     'B': [1,2,3,4] 
    }) 

df['B_sum'] = df.groupby('A').B.transform('sum') 

df 
# A B B_sum 
#0 1 1 3 
#1 1 2 3 
#2 2 3 7 
#3 2 4 7 
関連する問題