首页 > 解决方案 > pandas - groupby 标识符和日期并计算不同范围内的累积回报

问题描述

给定一个如下所示的 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 天前的累积回报是多少。例如,GOOG 在 2012 年 12 月 31 日的 5 天前累积回报我可以通过以下方式计算:

((1 + df.iloc[9:13]['return']).cumprod()-1).iloc[-1].shift(-5)

但是,我想尽可能有效地做到这一点。我知道如何按股票代码和日期分组,但我怎样才能在某个范围内累积回报并同时将它们转移回来?这在熊猫中甚至可能吗?

标签: pythonpandaspandas-groupby

解决方案


推荐阅读