2017-07-17 45 views
1

我想對多個數據框組應用操作,然後通過結果填充該組的所有值。讓我們的意思和np.cumsum作爲一個例子,下面的數據幀:在沒有彙總的情況下對組應用操作

df=pd.DataFrame({"a":[1,3,2,4],"b":[1,1,2,2]}) 

它看起來像這樣

a b 
0 1 1 
1 3 1 
2 2 2 
3 4 2 

現在我想按b數據框,然後取a平均在每個組,然後將np.cumsum應用於該方法,然後用(組相關)結果替換a的所有值。

對於前三個步驟,我就這樣開始

df.groupby("b").mean().apply(np.cumsum) 

這給

a 
b 
1 2 
2 5 

但我要得到的是

a b 
0 2 1 
1 2 1 
2 5 2 
3 5 2 

任何想法如何能在一個很好的方式解決?

回答

1

可以使用map通過Series

df1 = df.groupby("b").mean().cumsum() 
print (df1) 
    a 
b 
1 2 
2 5 

df['a'] = df['b'].map(df1['a']) 
print (df) 
    a b 
0 2 1 
1 2 1 
2 5 2 
3 5 2 
相關問題