【问题标题】:python pandas: group time series by cumsum defined value, reset sum if value is reached [closed]python pandas:按cumsum定义的值对时间序列进行分组,如果达到值则重置总和[关闭]
【发布时间】:2017-06-14 11:03:13
【问题描述】:

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

【问题讨论】:

  • 为什么链接的答案没有回答你的问题,在我看来这是一个合适的欺骗

标签: python pandas reset cumsum


【解决方案1】:

让我们举一个更简单的例子

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

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多