python - 通过多级字典在 Pandas 中创建面板

标签 python pandas

我是 python 和 pandas 的新手。 我发现自己在 pandas 中创建 Panel 或多索引 DataFrame 时遇到了问题。

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

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

有什么简单的方法可以做到这一点。我查看了 Pandas 教程,但没有看到任何功能支持。

最佳答案

构造完成后可以应用swap_axes方法:

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

值得一提的是 from_dict Panel 方法,它允许您传递一个 orient(但显然只允许 items/minor,而您想做 major...):

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

关于python - 通过多级字典在 Pandas 中创建面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129005/

相关文章:

python - PyQt5:属性值更改时通知

Python 将日期和时间转换为 pandas 索引

python - OpenCV 无法找到棋盘角

python - 如何连接多个Dataframe

python - 根据旧数据帧中重新格式化的列创建新数据帧

python - 将列中的列表分隔符分为行和交叉点的多个标签

python - 舍入到最近的 bin

python - 所有可能的组合作为基于主列的数据帧的新列

python - 在 pandas 数据框中查找值的第一个实例

python - Tkinter .after 模块只是延迟了 GUI 的打开