Python 具有多索引面板的切片函数 具有多索引面板的切片函数

Python 具有多索引面板的切片函数 具有多索引面板的切片函数,python,pandas,panel,slice,multi-index,Python,Pandas,Panel,Slice,Multi Index,我创建了一个面板构造,它来自Pandas,带有一个多索引(参见代码)。如果没有多索引,我可以使用简单的命令将面板切成数据帧: PanelData.major_xs('A') PanelData.minor_xs('zTwo') 如果我将多索引面板切片,结果将是一个面板。我可以做些什么来获取数据帧(切片一个3D面板=>2D数据帧)?为什么切片的结果也是3D面板a面板?如果可能的话,结果应该是一个从“2010-01-01”到“2010-01-03”的数据帧,包括所有区域(“区域”-“zFour”)

我创建了一个
面板
构造,它来自
Pandas
,带有一个
多索引
(参见代码)。如果没有
多索引
,我可以使用简单的命令将
面板
切成
数据帧

PanelData.major_xs('A')
PanelData.minor_xs('zTwo')
如果我将
多索引
面板
切片,结果将是一个
面板
。我可以做些什么来获取
数据帧
(切片一个3D
面板
=>2D
数据帧
)?为什么切片的结果也是3D
面板
a
面板
?如果可能的话,结果应该是一个从“2010-01-01”到“2010-01-03”的数据帧,包括所有区域(“区域”-“zFour”)

面板数据:

<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 4 (major_axis) x 4 (minor_axis)
Items axis: 2010-01-01 to 2010-01-03
Major_axis axis: (A, 2) to (D, 0)
Minor_axis axis: (zOne, USA) to (zFour, CH)

尺寸:3(项目)x 4(长轴)x 4(短轴)
项目轴:2010-01-01至2010-01-03
长轴:(A,2)至(D,0)
短_轴:(美国区)至(瑞士区)

注意:我使用的是
Python v.2.7.6
IPython v.1.2.1
我认为,当你在Pandas面板中切片一个多索引轴时,因为索引是
MultiIndex
,在切片后索引仍然存在(在这种情况下
项轴:2到2
),因此结果仍然是一个
面板

In [67]:

PanelData.swapaxes(0,1).xs('A', 0)
Out[67]:
<class 'pandas.core.panel.Panel'>
Dimensions: 1 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: 2 to 2
Major_axis axis: 2010-01-01 to 2010-01-03
Minor_axis axis: (zOne, USA) to (zFour, CH)

谢谢你快速而有条理的回答。我想这就是我一直在寻找的。
In [67]:

PanelData.swapaxes(0,1).xs('A', 0)
Out[67]:
<class 'pandas.core.panel.Panel'>
Dimensions: 1 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: 2 to 2
Major_axis axis: 2010-01-01 to 2010-01-03
Minor_axis axis: (zOne, USA) to (zFour, CH)
In [68]:

print PanelData.swapaxes(0,1).loc[('A',2),]
zone       zOne zTwo zThree zFour
region      USA   CH     NZ    CH
2010-01-01  NaN  NaN    NaN   NaN
2010-01-02  NaN  NaN    NaN   NaN
2010-01-03  NaN  NaN    NaN   NaN

[3 rows x 4 columns]