python - 重新索引数据帧多索引
问题描述
我有一个像这样的行和列多索引的数据框
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
... ...
以不可变的方式(复制数据框,而不是原地更改)。我怎样才能做到这一点?
解决方案
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)