在 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 = (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

关于python - 如何在 Pandas 中实现滚动 pct_change(period)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35846147/

10-12 18:32