【问题标题】:pandas cumsun - reset after hiting max or reset when ID changepandas cumsun - 达到最大值后重置或 ID 更改时重置
【发布时间】:2021-04-22 14:18:04
【问题描述】:

根据这个问题

Python pandas cumsum() reset after hitting max

我想在达到最大值后重置 cumsum在 ID 更改时重置。

Transaction_ID  Time            TimeDelta       CumSum[ms]
1              00:00:04.500     00:00:00.000    000
1              00:00:04.600     00:00:00.100    100
1              00:00:04.762     00:00:00.162    262
2              00:00:05.543     00:00:00.781    1043
2              00:00:09.567     00:00:04.024    5067
2              00:00:10.654     00:00:01.087    6154
2              00:00:14.300     00:00:03.646    9800
3              00:00:14.532     00:00:00.232    10032
3              00:00:16.500     00:00:01.968    12000
3             00:00:17.543     00:00:01.043    13043

【问题讨论】:

    标签: python pandas timedelta cumsum


    【解决方案1】:

    查看链接中的函数,使用groupby构建函数

    def yourcumsum(x,maxvalue,lastvalue):
        newcum = []
        for row in x:
            thisvalue =  row + lastvalue
            if thisvalue > maxvalue:
                thisvalue = 0
            newcum.append( thisvalue )
            lastvalue = thisvalue
        return newcum
    
    
    df['new'] = df.TimeDelta.dt.total_seconds()*1000
    
    df['new' = df.groupby('Transaction_ID')['new'].transform(lambda x : yourcumsum(x,5000,0))
    0       0.0
    1     100.0
    2     262.0
    3     781.0
    4    4805.0
    5       0.0
    6    3646.0
    7     232.0
    8    2200.0
    9    3243.0
    Name: new, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 1970-01-01
      • 2017-10-27
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多