python-如何在 pandas 中实现rolling_pct_change(period)?

在 pandas 中实现滚动pct_change(period)方法的最佳方法是什么?

我有一个系列“ s”:

>>>s
   1999-03-01    1.0139
   1999-03-02    1.0053
   1999-03-03    1.0069
   1999-03-04    0.9963
   1999-03-05    1.0029
   1999-03-08    1.0052
   1999-03-09    1.0039
   ...

我正在寻找一种快速灵活的实施方式,使我可以像

>>>s.rolling_pct_change(period=3)
   1999-03-01    NaN
   1999-03-02    NaN
   1999-03-03    NaN
   1999-03-04    -0.0173587138771 
   1999-03-05    -0.00238734706058
   1999-03-08    -0.00168835038236
   1999-03-09    0.00762822443039

其中每个元素=(element [day]-element [day-period])/ element [day-period]

最佳答案

pct_change()方法自己吗?

In [265]: s.pct_change(3)
Out[265]:
                 val
date
1999-03-01       NaN
1999-03-02       NaN
1999-03-03       NaN
1999-03-04 -0.017359
1999-03-05 -0.002387
1999-03-08 -0.001688
1999-03-09  0.007628

或者,使用shift()建立

In [252]: s/s.shift(3)-1
Out[252]:
                 val
date
1999-03-01       NaN
1999-03-02       NaN
1999-03-03       NaN
1999-03-04 -0.017359
1999-03-05 -0.002387
1999-03-08 -0.001688
1999-03-09  0.007628