我的代碼當前如下所示:
df_1 = portfolio_all[0].rename(columns={'Close': 'Close_1'} )
df_2 = portfolio_all[1].rename(columns={'Close': 'Close_2'} )
df_3 = portfolio_all[2].rename(columns={'Close': 'Close_3'} )
df_4 = portfolio_all[3].rename(columns={'Close': 'Close_4'} )
df_5 = portfolio_all[4].rename(columns={'Close': 'Close_5'} )
df_1['daily_return_1'] = df_1['Close_1'].pct_change(1)
df_2['daily_return_2'] = df_2['Close_2'].pct_change(1)
df_3['daily_return_3'] = df_3['Close_3'].pct_change(1)
df_4['daily_return_4'] = df_4['Close_4'].pct_change(1)
df_5['daily_return_5'] = df_5['Close_5'].pct_change(1)
df_1['perc_ret_1'] = (1 + df_1.daily_return_1).cumprod() - 1
df_2['perc_ret_2'] = (1 + df_2.daily_return_2).cumprod() - 1
df_3['perc_ret_3'] = (1 + df_3.daily_return_3).cumprod() - 1
df_4['perc_ret_4'] = (1 + df_4.daily_return_4).cumprod() - 1
df_5['perc_ret_5'] = (1 + df_5.daily_return_5).cumprod() - 1
有沒有一種方法可以在for循環或類似的東西中動態創建這些dataframes,而不必將每個dataframe都寫為一行代碼?
您可以使用簡單的python
for-loop
和enumerate
通過list
創建假設您將所有dataframes作為一個列表。
這樣,就可以避免對每個DataFrame重復相同的代碼,并且它應該適用于任何數量的DataFrame s在您的
portfolio_all
列表中。希望這能有所幫助!