我有一個投資組合回報的數據框:date Portfolio %30/11/2001 4.831/12/2001 -0.731/01/2002 1.328/02/2002 -1.429/03/2002 3.3我需要創建一個回報指數,但要做到這一點,我需要有一個 1.0 的起始數字,并且公式引用了前一行。輸出應如下所示:date Portfolio % Index 1.0 NaN30/11/2001 4.8 1.048 31/12/2001 -0.7 1.04031/01/2002 1.3 1.05428/02/2002 -1.4 1.03929/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。然而,它從未得到完整的回答。
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
使用,?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
添加回答
舉報
0/150
提交
取消