Метод 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,
который получает значения указанного уровня