我所遇到的问题是,我想继续累加(累加)这些值,只有先前的值大于我的当前值。我尝试做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
我敢肯定有一种更快的方法可以做到这一点,但是现在可以使用:
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是您的原始数据帧。