我需要幫助打印出一份聲明,該聲明提供夏普比率最高的 A 和 B 各自分配的權重;這是從數據框派生的。到目前為止我做了什么:輸入efficient_df = pd.DataFrame({'Weights_A':weighted_A, 'Weights_B':weighted_B, 'Portfolio Return': port_ret, 'Portfolio Std Dev': port_std, 'Sharpe Ratio': sharpe_ratio })print (efficient_df.head())print('\n')sharpe_highest = efficient_df[efficient_df['Sharpe Ratio'] == efficient_df['Sharpe Ratio'].max()]print('Optimal portfolio details: ')print(sharpe_highest)輸出 Weights_A Weights_B Portfolio Return Portfolio Std Dev Sharpe Ratio0 0.00 1.00 0.001933 0.017561 0.1100811 0.01 0.99 0.001928 0.017386 0.1109162 0.02 0.98 0.001924 0.017212 0.1117603 0.03 0.97 0.001919 0.017040 0.1126124 0.04 0.96 0.001914 0.016869 0.113472Optimal portfolio details : Weights_A Weights_B Portfolio Return Portfolio Std Dev Sharpe Ratio51 0.51 0.49 0.001692 0.01148 0.147348我需要的是這樣的聲明:The best allocation is 0.51 of A and 0.49 of B.但是,下面的代碼沒有按預期工作。print('The best allocation is ', weighted_A == efficient_df['Sharpe Ratio'].max(), 'of A and ', weighted_B == efficient_df['Sharpe Ratio'].max(), ' of B.')結果The best allocation is False of A and False of B.
2 回答

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
您只是打印布爾值而不是實際值。
(假設只有一行具有最大“Srape Ratio”)
sharpe_highest = efficient_df[efficient_df['Sharpe Ratio'] == efficient_df['Sharpe Ratio'].max()]
然后簡單地打?。?/p>
print('The best allocation is ', float(sharpe_highest.weighted_A), 'of A and ', float(sharpe_highest.weighted_B), ' of B.')

jeck貓
TA貢獻1909條經驗 獲得超7個贊
你得到布爾值(False 和 True)而不是你想要的浮點數,因為你使用“==”,它必然返回一個布爾值。除非我誤解了,否則你不能使用“==”來獲得你想要的輸出。
print('The best allocation is ', weighted_GS == eff_portfolio_df['Sharpe Ratio'].max(), 'of GS and ', weighted_FB == eff_portfolio_df['Sharpe Ratio'].max(), ' of FB.')
添加回答
舉報
0/150
提交
取消