在我的例子中,如何通过避免NaN值来执行滚动计算?
我的系列:
2019-05-01 0.1
2019-05-02 0.2
2019-05-03 NaN
2019-05-04 NaN
2019-05-05 NaN
2019-05-06 0.1
2019-05-07 0.5
2019-05-08 NaN
2019-05-09 0.1
2019-05-10 0.2
2019-05-11 NaN
2019-05-12 NaN
2019-05-13 0.3我需要计算这个序列的周期2的平均值,我的输出是:
2019-05-01 NaN
2019-05-02 0.15
2019-05-03 NaN
2019-05-04 NaN
2019-05-05 NaN
2019-05-06 0.15
2019-05-07 0.30
2019-05-08 NaN
2019-05-09 0.30
2019-05-10 0.15
2019-05-11 NaN
2019-05-12 NaN
2019-05-13 0.25使用rolling时,如果您没有两个后续的非NaN值,则平均值将返回NaN,因此它不起作用(低于丢弃NaN的结果):
2019-05-01 NaN
2019-05-02 0.15
2019-05-03 NaN
2019-05-04 NaN
2019-05-05 NaN
2019-05-06 NaN
2019-05-07 0.30
2019-05-08 NaN
2019-05-09 NaN
2019-05-10 0.15
2019-05-11 NaN
2019-05-12 NaN
2019-05-13 NaN发布于 2019-05-14 00:36:25
您可以使用上次显示的值来估算您的数据:
temp = df.fillna(method='ffill')然后计算滚动平均值:
temp = temp.rolling(2).mean()最后替换NaNs:
temp.loc[np.isnan(df)] = np.nanhttps://stackoverflow.com/questions/56116253
复制相似问题