首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Pandas:自定义滚动窗口计算

Python Pandas:自定义滚动窗口计算
EN

Stack Overflow用户
提问于 2017-12-30 11:38:52
回答 1查看 2.2K关注 0票数 1

我正在寻找一个滚动窗口中的最新值,并将其除以该窗口中所有数字的平均值。

我尝试过的:

代码语言:javascript
复制
df.a.rolling(window=7).mean()/df.a[-1] 

这不起作用,因为df.a[-1]始终是整个数据集的最新数据。我需要窗口的最后一个值。

我今天做了大量的搜索。我可能搜索了错误的术语,或者不理解结果,因为我没有得到任何有用的东西。

如有任何建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-30 11:49:21

在滚动窗口上聚合(使用mean())将返回一个pandas Series对象,该对象的索引与原始列相同。您可以简单地聚合滚动窗口,然后将原始列除以聚合值。

代码语言:javascript
复制
import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(30), columns=['A'])

df
# returns:
     A
0    0
1    1
2    2
...
27  27
28  28
29  29

您可以使用滚动均值来获得具有相同索引的序列。

代码语言:javascript
复制
df.A.rolling(window=7).mean()
# returns:
0      NaN
1      NaN
2      NaN
3      NaN
4      NaN
5      NaN
6      3.0
7      4.0
...
26    23.0
27    24.0
28    25.0
29    26.0

因为它是索引的,所以您可以简单地除以df.A来获得所需的结果。

代码语言:javascript
复制
df.A.rolling(window=7).mean() / df.A
# returns:
0          NaN
1          NaN
2          NaN
3          NaN
4          NaN
5          NaN
6     0.500000
7     0.571429
8     0.625000
9     0.666667
10    0.700000
11    0.727273
12    0.750000
13    0.769231
14    0.785714
15    0.800000
16    0.812500
17    0.823529
18    0.833333
19    0.842105
20    0.850000
21    0.857143
22    0.863636
23    0.869565
24    0.875000
25    0.880000
26    0.884615
27    0.888889
28    0.892857
29    0.896552
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48030711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档