我有以下数据框
d = {'Ticker': ["Total_Pond", "Total_Pond", "Total_Pond", "ValorRelativo", "Avantage","Acatis" ],
'Tipo_Inv': ["FI", "FI", "FI", "FI","FI", "FI"], 'Fact_Pond': [2.313857e+06, 1.342821e+06,3.486820e+06,2.788324e+06, 4.929096e+06, 2.663564e+06],
'Total_Pond': [-53196.922835, -37853.091155, -114935.107120, -26013.111409,374923.428199, -235590.992103 ]}
df = pd.DataFrame(data=d)
df
我尝试计算每个值的加权平均兴趣,为此我旋转表并将列df_Imp_value 与除以 ["Total_Pond"]的结果 除以df ["Fact_Pond"]
# Interes medio ponderado de cada valor
df_Imp_valor = pd.pivot_table(df,index=["Ticker"],values=['Fact_Pond', 'Total_Pond' ],aggfunc=np.sum)
df_Imp_valor["Int_Med_Pond_Val"] = df ["Total_Pond"]/ df ["Fact_Pond"]
df_Imp_valor[:3]
结果不正确,因为它将 NaN 添加到该列的值。
Fact_Pond Total_Pond Int_Med_Pond_Val
Ticker
Acatis 2663564.0 -235590.992103 NaN
Avantage 4929096.0 374923.428199 NaN
Total_Pond 7143498.0 -205985.121110 NaN
我用另一种方式检查,除法的结果是一个数字
a = df ["Total_Pond"]
b = df ["Fact_Pond"]
a/b
0 -0.022991
1 -0.028189
2 -0.032963
3 -0.009329
4 0.076063
5 -0.088450
dtype: float64
肯定是我着迷了。我犯了什么错误?谢谢您的帮助
我了解您想对旋转结果进行除法,而不是对原始表的列进行除法。
问题在于:
您从原始数据框中拆分列,
df
但将结果分配给具有其他索引的旋转结果数据框。由于索引不匹配,因此拆分结果中没有与股票代码名称对应的行,因此将其填充为NaN
.这样做:
结果已经正确: