给出一个看起来像这样的DataFrame:
ticker date return
0 AAPL 2012-12-31 0.032615
1 AAPL 2013-01-02 0.036938
2 AAPL 2013-01-03 0.023232
3 AAPL 2013-01-04 0.014632
5 AMZN 2013-01-07 -0.007089
6 AMZN 2013-01-08 0.003060
7 AMZN 2013-01-09 -0.015760
8 AMZN 2013-01-10 -0.019112
9 GOOG 2012-12-31 0.032615
10 GOOG 2013-01-02 0.036938
11 GOOG 2013-01-03 0.023232
12 GOOG 2013-01-04 0.014632
13 GOOG 2013-01-07 -0.017902
13 GOOG 2013-01-08 -0.007089
14 GOOG 2013-01-09 0.003060
15 GOOG 2013-01-10 -0.015760
我的目标是,对于每一行,我都能有另一列告诉我,报价器在提前5天,21天,63天和252天期间的累计收益是多少。例如,我可以通过以下操作计算出2012年12月31日GOOG的提前5天的累计收益:
((1 + df.iloc[9:13]['return']).cumprod()-1).iloc[-1].shift(-5)
但是,我想尽可能有效地做到这一点。我知道如何对代码和日期进行分组,但是我又如何在一定范围内累计收益并同时将其转移回去?在大熊猫中甚至有可能吗?