如何在pandas中实现rolling_pct_change(period)函数?

4
如何在pandas中最好地实现rolling 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]`。
1个回答

4

使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接