gpt4 book ai didi

python - 如何将 Pandas 面板重新索引到 MultiIndex

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:42 26 4
gpt4 key购买 nike

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

我已经创建了多重索引“mind”。

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。

最佳答案

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

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

另一种选择是仅使用 DataFrame:

In [12]: pd.concat([dfmean, dfclose], axis=1, keys=['dfmean' ,'dfclose'])
Out[12]:
dfmean dfclose
sec Consumer,Cyclical Industrial Software Consumer,Cyclical Industrial Software
sub Retail MiscellaneousManufactur Technology Retail MiscellaneousManufactur Technology
ticker AZO AZZ AZPN AZO AZZ AZPN
2013-09-02 -0.05 -0.05 -0.05 1.1 2.1 3.1
2013-09-03 0.05 0.05 0.05 1.2 2.2 3.2

关于python - 如何将 Pandas 面板重新索引到 MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651142/

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