如何将“Pandas”面板重新索引为多索引

2024-06-26 14:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个3D面板数据。 我无法将其重新索引为2级的多索引。在

我创造了多索引的“头脑”。在

import pandas as pd

mind = pd.MultiIndex.from_arrays([['Consumer,Cyclical','Industrial','Software'], ['Retail','MiscellaneousManufactur','Technology'], ['AZO','AZZ','AZPN']],names=['sec','sub','ticker'])

dfclose = pd.DataFrame([[1.1,2.1,3.1],[1.2,2.2,3.2]], index=['2013-09-02','2013-09-03'], columns=['AZO','AZZ','AZPN'])
dfmean = dfclose - dfclose.mean()

pdata2 = pd.Panel({'close':dfclose, 'mean':dfmean})
pdata2.minor_axis.name='ticker'
pdata3=pdata2.reindex_axis(mind,axis=2,level='ticker')

但是pdata3没有映射到新的多重索引并给出NaN。在


Tags: 数据面板meanpdtickeraxismind头脑
1条回答
网友
1楼 · 发布于 2024-06-26 14:43:03

这似乎是0.12中的一个错误(将在0.13中修复)。
解决方法不是在之后重新编制索引,而是在创建dfclose时使用多重索引:

dfclose = pd.DataFrame([[1.1, 2.1, 3.1], [1.2, 2.2, 3.2]],
                           index=['2013-09-02','2013-09-03'],
                           columns=mind)
dfmean = dfclose - dfclose.mean()
pdata2 = pd.Panel({'close':dfclose, 'mean':dfmean})
pdata2.minor_axis.name='ticker'

In [11]: pdata2.iloc[0]
Out[12]: 
sec         Consumer,Cyclical               Industrial    Software
sub                    Retail  MiscellaneousManufactur  Technology
ticker                    AZO                      AZZ        AZPN
2013-09-02                1.1                      2.1         3.1
2013-09-03                1.2                      2.2         3.2

另一个选择是只使用数据帧:

^{pr2}$

相关问题 更多 >