【发布时间】:2019-08-21 00:33:42
【问题描述】:
我想计算时间序列的滚动加权平均值以及在特定时间间隔内计算的平均值。例如,这计算了 90 天窗口(未加权)的滚动平均值:
import numpy as np
import pandas as pd
data = np.random.randint(0, 1000, (1000, 10))
index = pd.date_range("20190101", periods=1000, freq="18H")
df = pd.DataFrame(index=index, data=data)
df = df.rolling("90D").mean()
但是,当我应用加权函数(下一行)时,我收到一个错误:“ValueError: Invalid window 90D”
df = df.rolling("90D", win_type="gaussian").mean(std=60)
另一方面,如果我将窗口设为整数而不是偏移量,则加权平均值会起作用:
df = df.rolling(90, win_type="gaussian").mean(std=60)
使用整数不适用于我的应用程序,因为观察的时间间隔不均匀。
两个问题:
我可以做一个带偏移量的加权滚动平均值吗(例如“90D”或“3M”?
如果我可以用偏移量做加权滚动平均值,那么 std 参考我指定window="90D"和win_type="gaussian"的时候;这是否意味着标准是60D?
【问题讨论】:
-
您确定您的 pandas 版本已更新吗?... 您需要 pandas >= 0.19.0。你的代码对我有用
-
@DanielFonnegraGarcía 是的,Pandas 版本是 0.23.4。当 window="90D" 和 win_type="gaussian" 时它对你有用吗?