仅当前一个值大于当前值时才求和

问题描述 投票:0回答:1

我所遇到的问题是,我想继续累加(累加)这些值,只有先前的值大于我的当前值。我尝试做cumsum,但是我无法根据条件来做。以下是我的df的外观以及我要达到的目标。请注意,索引1和2之间没有求和,因为6000大于1000。

timestamp       id  value
0 2019-11-04 14:00:10.432783  device1   3000
1 2019-11-04 12:20:03.946156  device1   6000
2 2019-11-04 11:19:03.946156  device1   1000
3 2019-11-04 10:19:03.946156  device1   4000
4 2019-11-04 09:19:03.946156  device2   1000
5 2019-11-04 08:19:03.946156  device2   4000


Expected 
                 timestamp       id     value       finalvalue
0 2019-11-04 14:00:10.432783  device1     3000         9000
1 2019-11-04 12:20:03.946156  device1     6000         6000
2 2019-11-04 11:19:03.946156  device1     1000         5000
3 2019-11-04 10:19:03.946156  device1     4000         4000
4 2019-11-04 09:19:03.946156  device2     1000         5000
5 2019-11-04 08:19:03.946156  device2     4000         4000



python python-3.x pandas pandas-groupby cumsum
1个回答
0
投票

我敢肯定有一种更快的方法可以做到这一点,但是现在可以使用:

values = df["value"].values
cumsums=[]
for i, row in df.iterrows():
    cumsum=values[i]
    for idx in range(i+1,len(values)):
        if values[idx]>values[idx-1]:
            cumsum+=values[idx]
        else:
            break
    cumsums.append(cumsum)

df["finalvalue"]=cumsums

df是您的原始数据帧。

© www.soinside.com 2019 - 2024. All rights reserved.