Python 熊猫重新索引多索引工作不正常

Python 熊猫重新索引多索引工作不正常,python,pandas,Python,Pandas,我有一个pandas(version 1.0.5)DataFrame,具有两个级别的多索引,如: 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']) 我想重新索引多索引的第一级,以包含键['a','b','c','d']。缺少的值应填入np.nan

我有一个
pandas
version 1.0.5
DataFrame
,具有两个级别的
多索引,如:

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'])
我想
重新索引多索引的第一级,以包含键
['a','b','c','d']
。缺少的值应填入
np.nan

对于非多索引的数据帧,我只需使用
df.reindex(index=['a','b','c','d')重新编制索引即可。

现在对于
多索引
,我认为这应该是可行的(我还尝试了参数
标签
索引
的所有其他组合):

但它似乎完全忽略了
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
我可以重新编制多索引的唯一方法是完全生成一个新的
多索引

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

我想一定有更简单的方法,否则我看不到
reindex
方法的
level
参数有任何用处。此外,我经常有几个索引级别,这使得重新编制索引非常麻烦


我错过什么了吗知道如何直接重新编制索引而不必显式生成新的多索引吗?

预计不会出现这种行为。将
level
参数传递到
multi-index
上的
reindex
pandas
版本1.2.3中似乎仍处于中断状态。github上存在一个问题,涉及以下内容:

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