首页 > 解决方案 > 重新索引数据帧多索引

问题描述

我有一个像这样的行和列多索引的数据框

            BLUB      BLA     
            A    B    C    D
sample
0      blub ...  ...
1      blub ...
2      blub
3      blub
4      blub
0      blub
1      blub
2      blub
...    ...

我想重新索引这个

            BLUB      BLA     
            A    B    C    D
sample
0      blub ...  ...
1      blub ...
2      blub
3      blub
4      blub
5      blub
6      blub
7      blub
...    ...

以不可变的方式(复制数据框,而不是原地更改)。我怎样才能做到这一点?

标签: pythonpandasdataframemulti-index

解决方案


Because MultiIndex in index you can create default index by first level of MultiIndex by DataFrame.reset_index and DataFrame.set_index:

df = (df.reset_index(level=1)
        .reset_index(drop=True)
        .set_index('level_1', append=True)
        .rename_axis(['sample', None]))

Or by MultiIndex.from_arrays:

mux = pd.MultiIndex.from_arrays([np.arange(len(df)), 
                                 df.index.get_level_values(1)], 
                                names=['sample', None])
df = df.set_index(mux)

推荐阅读