如何在for循环中创建一个多级索引,其中一个名称列表为每个dataframe[Python]建立索引?

2024-10-03 02:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个多级行索引,其级别0是我命名为environ的列表中列表元素的名称(请参见下面的代码,例如regime1)。该行索引的第二级是参数名(例如alpha[1])。列索引是与数据相匹配的模型类型的名称(例如模型1)。最终目标是创建一个循环,在其中我可以传递与数据系列关联的名称列表,系列的标签成为行多级索引的第一级,第二级是参数名称,列索引是适合数据系列的模型的名称

进口:

from arch import arch_model
from collections import OrderedDict
import numpy as np
import pandas as pd
import datetime as dt
import arch.data.sp500

下面是我希望输出的样子,如果我打印代码循环的结果

                   model_1   model_2
Regime 1 alpha[1]  0.102150  0.099596
         beta[1]   0.885206  0.899932
         mu        0.056353  0.066129
         nu             NaN  6.607229
         omega     0.017507  0.008664
                   model_1   model_2
Regime_2 alpha[1]  0.102150  0.099596
         beta[1]   0.885206  0.899932
         mu        0.056353  0.066129
         nu             NaN  6.607229
         omega     0.017507  0.008664

下面的代码是我最近一次尝试获取上述所需输出的代码:

environ = ['regime1','regime2']
data = arch.data.sp500.load()
market = data['Adj Close']
returns = 100 * market.pct_change().dropna()
returns2 = 100 * market.pct_change().dropna()
datasets = [returns,returns2]
for i,j in zip(environ,datasets):
    model1 = arch_model(datasets[j]).fit(disp='off')
    model2 = arch_model(datasets[j], dist='t').fit(disp='off')
    comparison = pd.DataFrame( OrderedDict((('model_1',model1.params), ('model_2', model2.params))))
    print(comparison)

我收到的当前错误:

TypeError: list indices must be integers or slices, not Series

我不相信纠正上面的错误能解决我的问题。我想返回一个多级数据帧,它看起来类似于上面所需的输出


Tags: 数据代码模型importalpha名称列表data