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