gpt4 book ai didi

python - 带有 MultiIndex Pandas 面板的切片函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:24 25 4
gpt4 key购买 nike

带有 MultiIndex Pandas 面板的切片函数

我使用 MultiIndexPandas 创建了一个 Panel 结构(参见代码)。如果没有 MultiIndex,我可以使用简单的命令将 Panel 切片为 DataFrame:

PanelData.major_xs('A')
PanelData.minor_xs('zTwo')

如果我对 MultiIndex Panel 进行切片,结果将是一个 Panel。我该怎么做才能得到 DataFrame(切片 3D Panel => 2D DataFrame)?为什么带有 3D Panel 的切片的结果也是 Panel?如果可能的话,结果应该是一个从 '2010-01-01' 到 '2010-01-03' 的 DataFrame,所有区域 ('zOne' - 'zFour')。

import pandas as pd

ListLetter = ['A', 'B', 'C', 'D']
ListCode = [2, 1, 1, 0]
ListZone = ['zOne', 'zTwo', 'zThree', 'zFour']
ListRegion = ['USA', 'CH', 'NZ', 'CH']
index = pd.MultiIndex.from_arrays([ListLetter, ListCode], names=['letter', 'code'])
columns = pd.MultiIndex.from_arrays([ListZone, ListRegion], names=['zone', 'region'])

PanelData = pd.Panel({'2010-01-01': pd.DataFrame(index=index, columns=columns)})
PanelData['2010-01-02'] = pd.DataFrame(index=index, columns=columns)
PanelData['2010-01-03'] = pd.DataFrame(index=index, columns=columns)
PanelData

面板数据:

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

注意:我使用的是 Python v.2.7.6IPython v.1.2.1

最佳答案

我想,当你在 Pandas Panel 中切片 MultiIndex 的轴时,因为索引是 MultiIndex,切片后索引仍然存在(在这种情况下 Items axis: 2 to 2), 因此结果仍然是一个Panel

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)

因此,如果我们使用稍微不同的 MultiIndex 切片方法,返回的是一个 DataFrame

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]

关于python - 带有 MultiIndex Pandas 面板的切片函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com