首页 > 解决方案 > 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。然而,它从未得到完整的回答。

标签: pythonpandasdataframe

解决方案


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

推荐阅读