循环出的每个结果放进dataframe里并导出

问题遇到的现象和发生背景

用循环对dailyreturn数据计算每月的标准差,之后导出到一个dataframe里,总共有16年数据

问题相关代码,请勿粘贴截图

for i,j in zip(range(2001,2017), range(1,13)):
if i < 2017:
if j < 13:
Y = list(range(i,i+1))
M = list(range(j,j+1))
data_year = ret_daily[ret_daily['Year'].isin(Y)]
data_month = data_year[data_year['Month'].isin(M)]
std_monthly = data_month.std()
lst.append(std_monthly)
df = pd.DataFrame(lst)
j += 1
else:
i += 1
print(lst)

运行结果及报错内容

中间部分单独计算一个月的时候数据是对的,但是代入到循环以后就只有十行结果

我想要达到的结果

行表头是股票的名称,想要第一列是年份+月份,十六年数据,总共最后有192行标准差,并导出到excel

题主参考代码:


lst = []
month_lst = []
for i in range(2001, 2017):
    for j in range(1, 13):
        Y = list([i])
        M = list([j])
        data_year = ret_daily[ret_daily['Year'].isin(Y)]
        data_month = data_year[data_year['Month'].isin(M)]
        std_monthly = data_month.std()
        lst.append(std_monthly)
        month_lst.append(str(i) + "-" + str(j))

df = pd.DataFrame({'std':lst}, index=month_lst)
df.to_excel("std_data.xlsx")