python - Python从返回创建索引
问题描述
我有一个投资组合回报的数据框:
date Portfolio %
30/11/2001 4.8
31/12/2001 -0.7
31/01/2002 1.3
28/02/2002 -1.4
29/03/2002 3.3
我需要创建一个返回索引,但要做到这一点,我需要有一个 1.0 的起始数字,并且公式引用了前一行。输出应如下所示:
date Portfolio % Index
1.0 NaN
30/11/2001 4.8 1.048
31/12/2001 -0.7 1.040
31/01/2002 1.3 1.054
28/02/2002 -1.4 1.039
29/03/2002 3.3 1.073
例如,第二个结果的公式是:
1.048*(1+-0.7/100)
我尝试了以下代码,但没有得到所需的结果。
portfolio['Index'] = portfolio['Portfolio %'] / portfolio['Portfolio %'].iloc[0]
我遇到的问题:
- 我无法获得起始变量
- 我无法获得引用前一行的公式。
我相信这与这篇文章是同一个问题:Create and index from return PANDAS。然而,它从未得到完整的回答。
解决方案
Use, Series.div
, Series.add
along with Series.cumprod
:
df['Index'] = df['Portfolio %'].div(100).add(1).cumprod()
Result:
# print(df)
date Portfolio % Index
0 30/11/2001 4.8 1.048000
1 31/12/2001 -0.7 1.040664
2 31/01/2002 1.3 1.054193
3 28/02/2002 -1.4 1.039434
4 29/03/2002 3.3 1.073735
推荐阅读
- git - “测试”的 husky 预提交钩子未完成
- excel - 使用 Excel VBA 根据发送时间下载附件
- kdb - 如何在 KDB 中按符号删除行?
- python - 如果发生内存错误,如何解决在 Python 中获得 n 个二进制值的大量组合?
- typescript - 关于实现与钱包的连接的问题
- spring - java.lang.ClassNotFoundException:org.elasticsearch.action.ActionType
- python - 当文件夹中有一个名为 random.py 的文件时,Jupyter 笔记本单元代码未在 VSCode 中执行
- reactjs - 我可以在 FullCalledar 上自定义(例如在事件中添加元素)事件吗?(react.js)
- django - 从使用 Amazon EC2 部署的 VM Linux 访问 Django 服务器
- android - 在 android studio 中使用谷歌分析事件、bigQuery 和 tenserflow 制作推荐系统