import numpy as np
import pandas as pd
exante_beta = pd.read_csv('beta_0.csv') #导入回归得到的ex-ante beta
monthly_profit = pd.read_csv('alpha_1.csv') #导入股票每月收益率
weighted_index_1 = pd.read_csv(open('日度流通值.csv')) #导入股票每月市值
weighted_index = pd.DataFrame(weighted_index_1).fillna(0)
mean_beta = pd.DataFrame(columns=['beta1','beta2','beta3','beta4','beta5'])
mean_profits = pd.DataFrame(columns=['prof1','prof2','prof3','prof4','prof5']) #创建两个空列表
#对每行数据做循环
for i in range(2432):
beta = exante_beta.iloc[i]
profits = monthly_profit.iloc[i]
weight = weighted_index.iloc[i]
for index in beta.index:
if beta[index] == 99999:
beta.pop(index) #排除beta无效值
beta1 = beta[1:].sort_values()#将股票按beta排序并分组
window = len(beta1)//5
b1 = beta1[0:window]
#将每组alpha的空值排除
profits_1 = pd.DataFrame(profits[b1.index]).dropna()
#求组合alpha的加权平均
prf1 = np.average(profits_1,axis=0, weights=weight[profits_1.index])
回归的结果出现很多‘nan’,可是空值已经排除了,求大神解惑,谢谢!!!