是否可以在Pandas中创建带有子标题的数据帧?

时间:2017-07-07 14:18:22

标签: python python-2.7 pandas dataframe

我有以下代码:

_tmp = {}
_tmp['pre'] = {
    'A2': 10,
    'B2': 15,
    'C2': 20
}
_tmp['diff'] = {
    'A1': 10,
    'B1': 15,
    'C1': 20
}
_tmp['sum'] = {
    'A': 100,
    'B': 150,
    'C': 200
}

_dff = pd.DataFrame(data=_tmp.values(), index=_tmp.keys())
_dff[['A', 'B', 'C', 'A1', 'B1', 'C1', 'A2', 'B2', 'C2']]

因此,我得到了下面描述的结果:

enter image description here

我感兴趣的是如果可以在下面的pandas中构建一个结构:

enter image description here

1 个答案:

答案 0 :(得分:2)

您真正关注的是三维结构,数据框架无法做到这一点。 (他们只是2D。)

这为您提供了几个选项:

(1)多个数据帧(pre / diff / sum)。

dfs = {k:pd.DataFrame(v.items()) for k,v in _tmp.items()}

(2)您可以构建的大熊猫Panel

pnl = pd.Panel(dfs)

这是一种对多个数据帧进行分组的方法。

(3)3d numpy矩阵:

>>> pnl.as_matrix()
[[['A1' 10]
  ['C1' 20]
  ['B1' 15]]

 [['C2' 20]
  ['A2' 10]
  ['B2' 15]]

 [['A' 100]
  ['C' 200]
  ['B' 150]]]

您必须编写自定义打印功能以获取您当前的确切请求输出,但这些将是您表示数据的方式。