是否可以使用 pandas.DataFrame.rolling 窗口期 5 并在其中跳过今天的值

Posted

技术标签:

【中文标题】是否可以使用 pandas.DataFrame.rolling 窗口期 5 并在其中跳过今天的值【英文标题】:Is it possible to use pandas.DataFrame.rolling window period 5 with skipping today's value in that 【发布时间】:2021-08-14 08:13:54 【问题描述】:

need to get output in column <5_Days_Up> like the image.

Date        price       5_Days_Up
20-May-21       1       
21-May-21       2       
22-May-21       4       
23-May-21       5       
24-May-21       6       5
25-May-21       7       6
26-May-21       8       7
27-May-21       9       8
28-May-21       10      9
29-May-21       11      10
30-May-21       12      11
31-May-21       13      12
1-Jun-21        14      13
2-Jun-21        15      14

But, got the output like this.

Date        price       5_Days_Up
20-May-21       1       
21-May-21       2       
22-May-21       4       
23-May-21       5       
24-May-21       6       6
25-May-21       7       7
26-May-21       8       8
27-May-21       9       9
28-May-21       10      10
29-May-21       11      11
30-May-21       12      12
31-May-21       13      13
1-Jun-21        14      14
2-Jun-21        15      15

在这里,我在 python pandas 中使用

df['5_Days_Up'] = df['price'].rolling(window=5).max()

有没有办法在使用相同的 rolling() 或任何其他方法跳过今天的价格后获得最后 5 个周期的最大值?

【问题讨论】:

【参考方案1】:

您的数据在日期 24-May-21 之前只有 4 个(而不是 5 个)之前的条目,其中 price 等于 6(因为数据样本中没有 price 等于 3。)因此,您第一个显示非 NaN 值的条目将从日期 25-May-21 开始,price 等于 7

要包含上一个条目(排除当前条目),您可以使用参数closed='left' 来实现:

df['5_Days_Up'] = df['price'].rolling(window=5, closed='left').max()

结果:

         Date  price  5_Days_Up
0   20-May-21      1        NaN
1   21-May-21      2        NaN
2   22-May-21      4        NaN
3   23-May-21      5        NaN
4   24-May-21      6        NaN
5   25-May-21      7        6.0
6   26-May-21      8        7.0
7   27-May-21      9        8.0
8   28-May-21     10        9.0
9   29-May-21     11       10.0
10  30-May-21     12       11.0
11  31-May-21     13       12.0
12   1-Jun-21     14       13.0
13   2-Jun-21     15       14.0

【讨论】:

以上是关于是否可以使用 pandas.DataFrame.rolling 窗口期 5 并在其中跳过今天的值的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 JavaScript 确定 GeoJSON 点是否在 GeoJSON 多边形内?

是否可以检查是否使用modernizr 启用了cookie?

是否可以使用 HTML/Javascript 按名称启动应用程序?

是否可以使用 jQuery 读取元标记

是否可以使用批处理文件检查两个文件是否共享相同的名称?

是否可以使用 INFORMATION_SCHEMA 模式来检查数据库是否存在?