Метод sortlevel
Метод sortlevel применяется к MultiIndex
и сортирует индекс по указанному уровню. Первым
параметром передаётся номер уровня или его имя.
Вторым параметром можно задать порядок сортировки.
Метод возвращает новый отсортированный MultiIndex
и массив с индексами для перестановки строк.
Синтаксис
multiindex.sortlevel(level=0, ascending=True)
Параметры
Параметр level определяет уровень для сортировки.
По умолчанию сортируется первый уровень (индекс 0).
Параметр ascending управляет порядком сортировки.
Если True - по возрастанию, если False - по убыванию.
Пример
Давайте создадим MultiIndex и отсортируем его по первому уровню:
import pandas as pd
idx = pd.MultiIndex.from_tuples([
('b', 3),
('a', 2),
('c', 1)
])
sorted_idx, idx_sorter = idx.sortlevel(level=0)
print(sorted_idx)
Результат выполнения кода:
MultiIndex([('a', 2),
('b', 3),
('c', 1)],
)
Пример
Отсортируем по второму уровню в порядке убывания:
import pandas as pd
idx = pd.MultiIndex.from_tuples([
('b', 3),
('a', 2),
('c', 1)
])
sorted_idx, idx_sorter = idx.sortlevel(level=1, ascending=False)
print(sorted_idx)
Результат выполнения кода:
MultiIndex([('b', 3),
('a', 2),
('c', 1)],
)
Пример
Применим метод к DataFrame с MultiIndex и используем
возвращённый массив для перестановки строк:
import pandas as pd
idx = pd.MultiIndex.from_tuples([
('b', 3),
('a', 2),
('c', 1)
])
df = pd.DataFrame(
{'a': [1, 2, 3], 'b': [10, 20, 30]},
index=idx
)
sorted_idx, idx_sorter = idx.sortlevel(level=0)
df_sorted = df.iloc[idx_sorter]
print(df_sorted)
Результат выполнения кода:
a b
a 2 2 20
b 3 1 10
c 1 3 30
Смотрите также
-
класс
MultiIndex,
который создаёт иерархический индекс -
метод
swaplevel,
который меняет уровни индекса местами -
метод
reorder_levels,
который изменяет порядок уровней индекса -
метод
droplevel,
который удаляет уровень из индекса