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]