Небольшой фрейм данных с двухуровневым мультииндексом и одним столбцом. Второй столбец (уровень 1) индекса будет отсортирован в алфавитном порядке, поставив «Четыре» перед «Три».
import pandas as pd
df = pd.DataFrame({'A':[1,1,2,2],
'B':['One','Two','Three', 'Four'],
'X':[1,2,3,4]},
index=range(4)).set_index(['A','B']).sort_index()
df
X
A B
1 One 1
Two 2
2 Four 4
Three 3
Очевидно, что второй уровень индекса (B) находится в алфавитном порядке, поэтому его можно заменить категориальным индексом для обеспечения правильного порядка.
df.index.set_levels(pd.CategoricalIndex(df.index.levels[1],
categories=['One','Two','Three', 'Four'], ordered=True),
level=1, inplace=True)
После этого проверка индекса показывает, что уровень 1 действительно является категориальным индексом. Но при сортировке индекса строки не располагаются в желаемом порядке.
df.sort_index()
X
A B
1 One 1
Two 2
2 Four 4
Three 3
Примечание. Если фрейм данных имеет простой индекс 1 уровня, только это работает должным образом.
sort_index
? - person jpp   schedule 16.03.2018