2017-06-14 3 views
-3

私は列AとBを持つデータフレームを持っています。 希望の結果: Bの累計値が15以上になると、 0とcumsum> = 15の間の行は、df ["Amean"] = df ["A"]と計算されなければならない(df ["Bsum15"] = df ["B"]。 その後、cumsumは再び0にリセットされ、ループは続行されます。python pandas:cumsumで定義された時系列をグループ化し、値に達するとリセットします。

example

同様のトピック:
Python pandas cumsum() reset after hitting max

+1

なぜリンクの答えはあなたの質問に答えていないシンプルな例を取る、と言うことができます、それはtのようです私は適切な欺瞞になる – EdChum

答えて

0

我々は

df=pd.DataFrame([1,2,3,4,5,6,7,8,9,10],columns=['B']) 


def accum(vals): 
    acc=0 
    for i in vals: 
     acc+=i 
     if acc>=15: 
      yield acc 
      acc=0 
     else: 
      yield np.nan 

df['accu']=list(accum(df['B'].values)) 

戻り

B accu 
0 1 NaN 
1 2 NaN 
2 3 NaN 
3 4 NaN 
4 5 15.0 
5 6 NaN 
6 7 NaN 
7 8 21.0 
8 9 NaN 
9 10 19.0 
関連する問題