我有这个人。数据帧:
datetime
2001-01-01 3.22800
2002-01-01 2.69000
2003-01-01 2.75725
2004-01-01 3.22800
2005-01-01 3.36250
2006-01-01 3.83325
2007-01-01 2.82450
2008-01-01 4.77475
2009-01-01 3.63150
2010-01-01 3.69875
2011-01-01 4.90925
2012-01-01 3.96775
2013-01-01 4.64025
2014-01-01 4.64025
2015-01-01 4.57300
我想计算滚动窗口大小为3的平均值。
df.rolling(window=3).mean()
这给了我:
datetime
2001-01-01 NaN
2002-01-01 NaN
2003-01-01 2.891750
2004-01-01 2.891750
2005-01-01 3.115917
2006-01-01 3.474583
2007-01-01 3.340083
2008-01-01 3.810833
2009-01-01 3.743583
2010-01-01 4.035000
2011-01-01 4.079833
2012-01-01 4.191917
2013-01-01 4.505750
2014-01-01 4.416083
2015-01-01 4.617833
有没有办法计算滚动均值(或任何其他函数,使得没有获得NaN?因此,对于输入中的前2行,我们将使用接下来的3行和数据帧的最后2行,我们使用前3行?
我不能假设数据是循环的,即第一行不跟在最后一行。
答案 0 :(得分:1)
使用shift
和ffill
:
df.rolling(window=3).mean().shift(-2).ffill()
输出:
2001-01-01 2.891750
2002-01-01 2.891750
2003-01-01 3.115917
2004-01-01 3.474583
2005-01-01 3.340083
2006-01-01 3.810833
2007-01-01 3.743583
2008-01-01 4.035000
2009-01-01 4.079833
2010-01-01 4.191917
2011-01-01 4.505750
2012-01-01 4.416083
2013-01-01 4.617833
2014-01-01 4.617833
2015-01-01 4.617833