我有一个投资组合收益的数据框:
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 returns PANDAS。但是,从来没有得到完整的回答。
答案 0 :(得分:3)
使用Series.div
,Series.add
和Series.cumprod
:
df['Index'] = df['Portfolio %'].div(100).add(1).cumprod()
结果:
# 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