如何从三层嵌套字典创建多索引

How to create a multi-index from a triple-nested dictionary

{
  0 : {'acc507' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc522' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc551' : {'max' : 1, 'mean' : 2, 'min': 3} },
  
  1 : {'acc507' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc522' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc551' : {'max' : 1, 'mean' : 2, 'min': 3} },
  
  2 : {'acc507' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc522' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc551' : {'max' : 1, 'mean' : 2, 'min': 3} },
  
  3 : {'acc507' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc522' : {'max' : 1, 'mean' : 2, 'min': 3} ,
       'acc551' : {'max' : 1, 'mean' : 2, 'min': 3} }
 }

这是我的数据。 我想创建一个具有以下多索引的数据框:

indexML = pd.MultiIndex.from_arrays(arrays=[level1,level2],names=['K-Value','Model'])


MultiIndex([(0, 'acc507'),
            (0, 'acc522'),
            (0, 'acc551'),
            (1, 'acc507'),
            (1, 'acc522'),
            (1, 'acc551'),
            (2, 'acc507'),
            (2, 'acc522'),
            (2, 'acc551'),
            (3, 'acc507'),
            (3, 'acc522'),
            (3, 'acc551')],
           names=['K-Value', 'Model'])

我现在想添加 3 列,'max'、'mean'、'min'。我如何访问那些最后一级的值?我需要遍历每个字典还是有直接访问最后一个嵌套的方法?

这似乎是 messy/hard 使用数据结构。有没有更好的方法来存储此类信息?

尝试:

srs = pd.DataFrame(data).stack()
output = (pd.DataFrame(srs.tolist(), index=srs.index)
          .swaplevel()
          .rename_axis(['K-Value', 'Model']))
>>> output

                max  mean  min
K-Value Model                 
0       acc507    1     2    3
1       acc507    1     2    3
2       acc507    1     2    3
3       acc507    1     2    3
0       acc522    1     2    3
1       acc522    1     2    3
2       acc522    1     2    3
3       acc522    1     2    3
0       acc551    1     2    3
1       acc551    1     2    3
2       acc551    1     2    3
3       acc551    1     2    3