我有一列(价格),其值随时间变化。从一行到另一行,该值增加,减少或保持不变。我想记录值达到新高的次数。
因此,我添加了一个列currenthigh
来跟踪到目前为止的最高值。然后,我添加了另一列currenthigh_prev
,这是currenthigh
列移动了一行。这样,我可以比较两个值:当前值和上一个值。如果currenthigh > currenthigh_prev
,那么我有一个新高,记录在newhighscount
中。
我一直在尝试使用.cummax()
,这似乎是适当的。
df.loc[df['currenthigh'] > df['currenthigh_shift'], 'newhighscount'] = df['newhighscount'].cummax() + 1
我期望这样:
datetime last currenthigh currenthigh_shift **newhighscount**
31 2019-04-02 07:57:33 389.8400 389.84 NaN 0
32 2019-04-02 07:57:33 389.8400 389.84 389.84 0
33 2019-04-02 07:57:33 389.8700 389.87 389.84 **1**
34 2019-04-02 07:57:33 389.8800 389.88 389.87 **2**
35 2019-04-02 07:57:33 389.9000 389.90 389.88 **3**
36 2019-04-02 07:57:33 389.9600 389.96 389.90 **4**
37 2019-04-02 07:57:35 389.9000 389.96 389.96 **4**
38 2019-04-02 07:57:36 389.9000 389.96 389.96 **4**
39 2019-04-02 08:00:00 389.3603 389.96 389.96 **4**
40 2019-04-02 08:00:00 388.8500 389.96 389.96 **4**
41 2019-04-02 08:00:00 390.0000 390.00 389.96 **5**
42 2019-04-02 08:00:01 389.7452 390.00 390.00 **5**
43 2019-04-02 08:00:01 389.4223 390.00 390.00 5
44 2019-04-02 08:00:01 389.8000 390.00 390.00 5
我得到这个:
datetime last currenthigh currenthigh_shift newhighscount
31 2019-04-02 07:57:33 389.8400 389.84 NaN 0
32 2019-04-02 07:57:33 389.8400 389.84 389.84 0
33 2019-04-02 07:57:33 389.8700 389.87 389.84 1
34 2019-04-02 07:57:33 389.8800 389.88 389.87 1
35 2019-04-02 07:57:33 389.9000 389.90 389.88 1
36 2019-04-02 07:57:33 389.9600 389.96 389.90 1
37 2019-04-02 07:57:35 389.9000 389.96 389.96 0
38 2019-04-02 07:57:36 389.9000 389.96 389.96 0
39 2019-04-02 08:00:00 389.3603 389.96 389.96 0
40 2019-04-02 08:00:00 388.8500 389.96 389.96 0
41 2019-04-02 08:00:00 390.0000 390.00 389.96 1
42 2019-04-02 08:00:01 389.7452 390.00 390.00 0
43 2019-04-02 08:00:01 389.4223 390.00 390.00 0
44 2019-04-02 08:00:01 389.8000 390.00 390.00 0
基本上,
df['newhighscount'].cummax()
似乎不返回任何内容。 最佳答案
df['newhighscount'] = df['last'].cummax().diff().gt(0).cumsum()
这将计算最后一列的累积最大值,计算差值(cummax_t-cummax_ {t-1}),检查差值是否大于零,并计算该次数为true的次数。
关于python - 如何增加累积最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55521512/