根据熊猫的条件增加价值

时间:2020-03-01 23:39:13

标签: python python-3.x pandas dataframe

如果当前值为>上一个值(value.shift(-1)),则将值添加到df ['']。

从下到上开始。请查看我期望的数据框,以了解我要完成的任务

1 个答案:

答案 0 :(得分:1)

我们可以用DataFrame.sort_valuesgroupby.cumsum,并用groupby.diff检查条件。

df2=df.sort_values('timestamp')
blocks=df2.groupby('id')['value'].diff(-1).ge(0).cumsum()
df['finalvalue']=df2['value'].mask(blocks.ne(0), 
                                   df2.groupby(['id',blocks])['value'].cumsum())
print(df)

            timestamp       id  value  finalvalue
0 2020-02-16 03:05:57  device1   1000        4100
1 2020-02-16 02:05:33  device1    900        3100
2 2020-02-16 01:05:08  device1    700        2200
3 2020-02-16 00:04:44  device1    300        1500
4 2020-02-15 23:04:19  device1   1200        1200
5 2020-02-15 22:03:55  device1    800         800
6 2020-02-15 21:03:29  device1    400         400
7 2020-02-15 20:03:04  device1    200         200
8 2020-02-15 19:02:39  device1    100         100
9 2020-02-15 18:02:14  device1      0           0