gpt4 book ai didi

python - 如何增加累积最大值

转载 作者:行者123 更新时间:2023-12-01 01:04:20 24 4
gpt4 key购买 nike

我有一个列(价格),其值随着时间的推移而变化。从一行到另一行,值会增加、减少或保持不变。我想记录值(value)达到新高的次数。

因此,我添加了一个列 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}),检查差值是否大于零并计算该差值为真的次数。

关于python - 如何增加累积最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com