我有一個(gè)投資組合回報(bào)的數(shù)據(jù)框:date Portfolio %30/11/2001 4.831/12/2001 -0.731/01/2002 1.328/02/2002 -1.429/03/2002 3.3我需要?jiǎng)?chuàng)建一個(gè)回報(bào)指數(shù),但要做到這一點(diǎn),我需要有一個(gè) 1.0 的起始數(shù)字,并且公式引用了前一行。輸出應(yīng)如下所示: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例如,第二個(gè)結(jié)果的公式是: 1.048*(1+-0.7/100) 我已經(jīng)嘗試了以下代碼,但沒(méi)有得到所需的結(jié)果。portfolio['Index'] = portfolio['Portfolio %'] / portfolio['Portfolio %'].iloc[0]我遇到的問(wèn)題:我無(wú)法獲得起始變量我無(wú)法獲得引用前一行的公式。我相信這與這篇文章是同一個(gè)問(wèn)題:Create and index from returns PANDAS。然而,它從未得到完整的回答。
1 回答

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用,?Series.div
,Series.add
連同Series.cumprod
:
df['Index'] = df['Portfolio %'].div(100).add(1).cumprod()
結(jié)果:
# 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
添加回答
舉報(bào)
0/150
提交
取消