python pandas:按cumsum定义的值组时间序列,如果达到值则重置sum

时间:2017-06-14 11:03:14

标签: python pandas reset cumsum

我有一个包含A列和B列的数据框。 期望的结果: 如果B的cumsum达到值> = 15,则应计算0和cumsum> = 15之间的行的以下操作:df [" Amean"] = df [" A" ] .mean()和df [" Bsum15"] = df [" B"]。sum(); 然后再次将cumsum重置为0并继续循环。

example

类似主题:
Python pandas cumsum() reset after hitting max

1 个答案:

答案 0 :(得分: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