Python 通过多级字典在熊猫上创建面板

Python 通过多级字典在熊猫上创建面板,python,pandas,Python,Pandas,我是蟒蛇和熊猫的新手。 我发现自己在创建pandas的Panel或多索引数据帧时遇到了问题 事实上,我有一个多级字典,目前有三个级别,最终值是一个整数,我希望每个级别中的键是面板的对应索引,将面板的项目、长轴和短轴对应到我的dict的第一、第二、第三个级别。当我从字典中创建一个索引时,索引并不匹配。 这是我的字典 d={'item1':{'major0':{'minor0':1, 'minor1':2}, 'major1':{'

我是蟒蛇和熊猫的新手。 我发现自己在创建pandas的Panel或多索引数据帧时遇到了问题

事实上,我有一个多级字典,目前有三个级别,最终值是一个整数,我希望每个级别中的键是面板的对应索引,将面板的项目、长轴和短轴对应到我的dict的第一、第二、第三个级别。当我从字典中创建一个索引时,索引并不匹配。 这是我的字典

d={'item1':{'major0':{'minor0':1,
                      'minor1':2},
            'major1':{'minor0':3,
                      'minor1':4}
           },
   'item2':{'major0':{'minor0':5,
                      'minor1':6},
            'major1':{'minor0':7,
                      'minor1':8}
           }
  }

有什么简单的方法可以做到这一点吗。我看过熊猫教程,只是没有看到任何功能支持这个

我不确定这是否算是一种简单的方法,因为折叠字典肯定是你必须手工完成的事情,但是:

# Collapse the first two levels of keys into tuples
# The dict comprehension could (and maybe should) be written
# with standard for loops
d_collapsed = {(outer_k, inner_k): inner_v for outer_k in d 
               for inner_k, inner_v in d[outer_k].items()}
df = pd.DataFrame.from_dict(d_collapsed)
# Now unpack the tuples again
df.columns = pd.MultiIndex.from_tuples(df.columns)
输出:

df
Out[18]: 
         item1           item2        
        major0  major1  major0  major1
minor0       1       3       5       7
minor1       2       4       6       8

构建后,可以应用交换轴方法:

In [1]: p = pd.Panel(d)

In [2]: p.swapaxes()
Out[2]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: item1 to item2
Major_axis axis: major0 to major1
Minor_axis axis: minor0 to minor1

你能给我一个完整的小样本吗?天才,我从这里学到了一些关于多索引的用法。熊猫教程提供的信息太多,无法消化和快速学习。
In [11]: pd.Panel.from_dict(d, orient='minor')  # default orient is items
Out[11]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: major0 to major1
Major_axis axis: minor0 to minor1
Minor_axis axis: item1 to item2