Python Pandas:自定义滚动window计算
Python Pandas: Custom rolling window calculation
我正在寻找滚动 window 中的最新值,并将其除以上述 window 中所有数字的平均值。
我尝试了什么:
df.a.rolling(window=7).mean()/df.a[-1]
这不起作用,因为 df.a[-1]
始终是整个数据集中最新的。我需要 window.
的最后一个值
我今天进行了大量搜索。我可能搜索了错误的术语,或者不理解结果,因为我没有得到任何有用的东西。
任何指点将不胜感激。
滚动 windows returns 与原始列具有相同索引的 pandas 系列对象上的聚合(使用 mean()
)。您可以简单地汇总滚动 window,然后将原始列除以汇总值。
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
您可以使用滚动平均值来获得具有相同索引的系列。
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
以获得您想要的结果。
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
我正在寻找滚动 window 中的最新值,并将其除以上述 window 中所有数字的平均值。
我尝试了什么:
df.a.rolling(window=7).mean()/df.a[-1]
这不起作用,因为 df.a[-1]
始终是整个数据集中最新的。我需要 window.
我今天进行了大量搜索。我可能搜索了错误的术语,或者不理解结果,因为我没有得到任何有用的东西。
任何指点将不胜感激。
滚动 windows returns 与原始列具有相同索引的 pandas 系列对象上的聚合(使用 mean()
)。您可以简单地汇总滚动 window,然后将原始列除以汇总值。
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
您可以使用滚动平均值来获得具有相同索引的系列。
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
以获得您想要的结果。
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