DataFrame:具有滚动、均值和移位的移动平均值,同时忽略 NaN

ete*_*ty1 3 moving-average missing-data dataframe pandas

我有一个数据集,比方说,420x1。现在我要计算过去 30 天的移动平均值,不包括当前日期。

如果我执行以下操作:

df.rolling(window = 30).mean().shift(1)
Run Code Online (Sandbox Code Playgroud)

我的 df 导致窗口中有很多 NaN,这可能是由原始数据帧中的 NaN 引起的(30 个数据点中的 1 NaN 导致 MA 为 NaN)。

有没有忽略 NaN 的方法(避免应用方法,我在大数据上运行它所以性能是关键)?我不想用 0 替换该值,因为这可能会扭曲结果。

这同样适用于移动标准差。

WeN*_*Ben 7

例如,您可以添加min_periods, 并且NaN消失了

df=pd.DataFrame({'A':[1,2,3,np.nan,2,3,4,np.nan]})
df.A.rolling(window=2,min_periods=1).mean()

Out[7]: 
0    1.0
1    1.5
2    2.5
3    3.0
4    2.0
5    2.5
6    3.5
7    4.0
Name: A, dtype: float64
Run Code Online (Sandbox Code Playgroud)