РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
288 of 687 menu

Метод reorder_levels

Метод reorder_levels применяется к MultiIndex и изменяет порядок его уровней. Первым параметром передаётся список новых позиций уровней. Уровни могут быть указаны по индексу или по названию. Метод возвращает новый объект MultiIndex с переставленными уровнями.

Синтаксис

multiindex.reorder_levels(order)

Пример

Давайте создадим MultiIndex с тремя уровнями и переставим их в другом порядке:

import pandas as pd idx = pd.MultiIndex.from_tuples([ ('A', 'x', 1), ('A', 'y', 2), ('B', 'x', 3), ('B', 'y', 4) ], names=['level1', 'level2', 'level3']) print("Original index:") print(idx) res = idx.reorder_levels([2, 0, 1]) print("\nReordered index:") print(res)

Результат выполнения кода:

Original index: MultiIndex([('A', 'x', 1), ('A', 'y', 2), ('B', 'x', 3), ('B', 'y', 4)], names=['level1', 'level2', 'level3']) Reordered index: MultiIndex([(1, 'A', 'x'), (2, 'A', 'y'), (3, 'B', 'x'), (4, 'B', 'y')], names=['level3', 'level1', 'level2'])

Пример

Давайте переставим уровни по их названиям, используя строки вместо чисел:

import pandas as pd idx = pd.MultiIndex.from_arrays([ ['A', 'A', 'B', 'B'], ['x', 'y', 'x', 'y'], [1, 2, 3, 4] ], names=['group', 'subgroup', 'value']) print("Original index:") print(idx) res = idx.reorder_levels(['value', 'group', 'subgroup']) print("\nReordered index:") print(res)

Результат выполнения кода:

Original index: MultiIndex([('A', 'x', 1), ('A', 'y', 2), ('B', 'x', 3), ('B', 'y', 4)], names=['group', 'subgroup', 'value']) Reordered index: MultiIndex([(1, 'A', 'x'), (2, 'A', 'y'), (3, 'B', 'x'), (4, 'B', 'y')], names=['value', 'group', 'subgroup'])

Пример

Давайте переставим уровни в DataFrame с мультииндексом и посмотрим на изменение структуры таблицы:

import pandas as pd idx = pd.MultiIndex.from_tuples([ ('A', 'x', 1), ('A', 'y', 2), ('B', 'x', 3), ('B', 'y', 4) ], names=['cat', 'sub', 'num']) df = pd.DataFrame({'value': [10, 20, 30, 40]}, index=idx) print("Original DataFrame:") print(df) df.index = df.index.reorder_levels(['num', 'cat', 'sub']) print("\nDataFrame with reordered index:") print(df)

Результат выполнения кода:

Original DataFrame: value cat sub num A x 1 10 y 2 20 B x 3 30 y 4 40 DataFrame with reordered index: value num cat sub 1 A x 10 2 A y 20 3 B x 30 4 B y 40

Смотрите также

  • метод swaplevel,
    который меняет местами два уровня
  • метод droplevel,
    который удаляет указанные уровни
  • метод sortlevel,
    который сортирует уровни индекса
  • метод get_level_values,
    который получает значения указанного уровня
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить