python pandas: 按 cumsum 定义的值对时间序列进行分组,如果达到该值则重置总和

python pandas: group time series by cumsum defined value, reset sum if value is reached

我有一个包含 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

假设,我们举一个更简单的例子

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))

returns

    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