是否可以使用 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?