gpt4 book ai didi

Python Pandas : Custom rolling window calculation

转载 作者:行者123 更新时间:2023-11-30 22:23:33 25 4
gpt4 key购买 nike

我希望获取滚动窗口中的最新值,并将其除以所述窗口中所有数字的平均值。

我尝试过:

df.a.rolling(window=7).mean()/df.a[-1] 

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

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

如有任何指点,我们将不胜感激。

最佳答案

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

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

关于Python Pandas : Custom rolling window calculation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48030711/

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