python - 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)
但是,我想尽可能有效地做到这一点。我知道如何按股票代码和日期分组,但我怎样才能在某个范围内累积回报并同时将它们转移回来?这在熊猫中甚至可能吗?
解决方案
推荐阅读
- file - 写入大约 2 GB Vertx 的文件时出现内存不足错误
- javascript - 通过数组元素的Javascript滑块
- python - 创建vectors.dense和sparse.dense,它们是一样的吗?
- php - LaratrustSeeder 类不存在
- botframework - MS Teams submitTask 无法在 IOS Teams 应用程序中提交给机器人
- html - 我的图像(在 div 下标记)无法并排坐在同一行
- ios - 如何添加像模态视图(iOS)这样的联系人应用程序?
- javascript - 使用 React 功能组件时如何防止重新渲染
- blockchain - 区块链上存在比特币地址
- filesystemwatcher - C# fileSystemWatcher,将文件名添加到列表框问题