2017-07-17 6 views
1

データフレームの複数のグループに対して操作を適用し、結果でそのグループのすべての値を入力したいとします。集計なしでグループに操作を適用する

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 

のように見えた今、私は、その後にaの平均を取る、bによってグループにデータフレームをしたい:たとえば、次のデータフレームとして意味とnp.cumsum取ることができます次に各グループにnp.cumsumを適用し、aのすべての値を(グループに依存する)結果で置き換えます。最初の3つのステップについては

、私はこの

a 
b 
1 2 
2 5 

与え

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

しかし、私が取得したいのように開始するには、

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

任意のアイデアがどのようにこれができます良い方法で解決される?

答えて

1

を使用できmapSeriesによって:

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 
関連する問題