Pandas 重新索引多层次索引无法正常工作

7

我有一个 pandas (版本 1.0.5) 的 DataFrame,其中有两个层级的 MultiIndex,例如:

mi = pd.MultiIndex.from_product((('a', 'c'), (5, 12)))
np.random.seed(123)
df = pd.DataFrame(data=np.random.rand(4, 2), index=mi, columns=['x', 'y'])

我想要重新索引 MultiIndex 的第一层,使其包含键 ['a', 'b', 'c', 'd']。缺失值应填充为 np.nan。
对于非 MultiIndex 数据框,我只需使用 df.reindex(index=['a', 'b', 'c', 'd']) 进行重建索引。 现在对于 MultiIndex,我认为这应该能够实现(我也尝试过所有其他参数 labels、axis 和 index 的组合):
df.reindex(index=['a', 'b', 'c', 'd'], level=0)

但实际上它似乎完全忽略了reindex方法,并返回未更改的数据帧:

             x         y
a 5   0.696469  0.286139
  12  0.226851  0.551315
c 5   0.719469  0.423106
  12  0.980764  0.684830

我唯一能重新索引 MultiIndex 的方法,就是 完全生成一个新的 MultiIndex

df.reindex(index=pd.MultiIndex.from_product((
    ['a', 'b', 'c', 'd'], df.index.get_level_values(1).unique())))

个人认为应该有更简单的方法来处理这个问题,否则我认为在reindex方法中使用level参数没有什么用。此外,我经常有多级索引,这使得重新索引变得非常麻烦。

请问我是否遗漏了什么?有没有直接重新索引而无需显式生成新的多重索引的任何想法?

1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接