python - 沿短轴延伸熊猫面板框架

我想在熊猫中延伸一个沿着短轴的面板数据框架。我开始创建一个dicDataFrame来生成一个面板。

import pandas as pd
import numpy as np
rng = pd.date_range('1/1/2013',periods=100,freq='D')
df1 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df2 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df3 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})

如我所料,我发现我有一个面板,尺寸如下:
尺寸:3(项)x 100(主轴)x 4(最小轴)项目轴:
到第二个轴:
最小轴轴线:A到D
现在我想给短轴添加一个新的数据集:
pf['df1']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)

我发现在添加了这个新的短轴之后,面板阵列尺寸的形状没有改变:
shape(pf)

[3100,4]
我能够访问MaMAROXAXIS中的每个项目的数据:
pf.ix['df1',-10:,'E']

2013-04-01 0.168205 2013-04-02 0.677929 2013-04-03 0.845444
2013-04-04 0.431610 2013-04-05 0.501003 2013-04-06-0.403605
2013-04-07-0.185033 2013-04-08 0.270093 2013-04-09 1.569180
2013-04-10-1.374779频率:D,名称:E
但是如果我扩展切片包含多个主轴:
pf.ix[:,:,'E']

然后我遇到一个错误,说“E”是未知的。
有人能告诉我哪里出错了吗?或者有更好的方法来做这个手术吗?


最佳答案:

现在不行,看这个,https://github.com/pydata/pandas/issues/2578
但你可以用这种方式实现你想要的这是一个很便宜的行动
复制的。

In [18]: x = pf.transpose(2,0,1)

In [19]: x
Out[19]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 3 (major_axis) x 100 (minor_axis)
Items axis: A to D
Major_axis axis: df1 to df3
Minor_axis axis: 2013-01-01 00:00:00 to 2013-04-10 00:00:00

In [20]: x['E'] = new_df

In [21]: x.transpose(1,2,0)
Out[21]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 100 (major_axis) x 5 (minor_axis)
Items axis: df1 to df3
Major_axis axis: 2013-01-01 00:00:00 to 2013-04-10 00:00:00
Minor_axis axis: A to E