左对齐一个熊猫滚动对象

时间:2016-06-27 13:46:11

标签: python pandas

使用pandas 0.18.1,我想取一列数据帧的滚动平均值。从版本0.18.0开始,这是使用rolling()对象完成的。这些滚动对象的默认值是右对齐的。你可以传递一个布尔参数,center = True,将滚动对象与中心值对齐,但似乎没有办法左对齐它。这是一个例子:

df = pandas.DataFrame({'A': [2,3,6,8,20, 27]})
df
    A
0   2
1   3
2   6
3   8
4  20
5  27

标准方法自动与右边对齐,因此前两个凹槽没有值,窗口大小为3:

 df.rolling(window=3).mean()
           A
0        NaN
1        NaN
2   3.666667
3   5.666667
4  11.333333
5  18.333333

我们可以像这样对齐操作:

df.rolling(window=3).mean(center=True)
           A
0        NaN
1   3.666667
2   5.666667
3  11.333333
4  18.333333
5        NaN

但我正在寻找的是:

df.rolling(3).mean()
            A
 0   3.666667
 1   5.666667
 2  11.333333
 3  18.333333
 4        NaN
 5        NaN

我可以通过使用默认的右对齐,然后重新索引它,或者通过反转行的顺序然后执行“右对齐”来完成此操作,但这些是解决应该是什么的解决办法一个直接的操作。

1 个答案:

答案 0 :(得分:18)

我认为您可以使用shift

a = df.rolling(window=3).mean().shift(-2)
print (a)
           A
0   3.666667
1   5.666667
2  11.333333
3  18.333333
4        NaN
5        NaN