用多级字典创建Pandas面板

2024-09-30 12:16:04 发布

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

我是Python和熊猫的新手。 我发现在pandas创建面板或多索引数据帧时遇到了一个问题。在

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

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

有什么简单的方法吗。我已经看过熊猫教程,只是没有看到任何功能支持这个。在


Tags: 数据面板pandas字典整数级别dictitem1
2条回答

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

# 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)

输出:

^{pr2}$

可以在构造后应用交换轴方法:

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_dictPanel方法,它允许您传递一个orient(但显然只允许items/minor,而您希望执行major…):

^{pr2}$

相关问题 更多 >

    热门问题