Атрибут levels
Атрибут levels применяется к объекту MultiIndex
и возвращает кортеж из объектов Index, представляющих
уникальные значения на каждом уровне мультииндекса.
Этот атрибут полезен для просмотра всех возможных значений
на каждом уровне без учета повторений.
Синтаксис
multiindex.levels
Атрибут не принимает никаких параметров и возвращает
кортеж из объектов Index. Количество элементов
в кортеже соответствует количеству уровней мультииндекса.
Пример
Создадим мультииндекс с двумя уровнями и получим его уровни:
import pandas as pd
# Создаем мультииндекс из списка кортежей
index = pd.MultiIndex.from_tuples([
('A', 1),
('A', 2),
('B', 1),
('B', 2),
('C', 1)
], names=['letter', 'number'])
# Получаем уровни
levels = index.levels
print(levels)
Результат выполнения кода:
[Index(['A', 'B', 'C'], dtype='object', name='letter'), Index([1, 2], dtype='int64', name='number')]
Как видно из результата, первый уровень содержит уникальные значения 'A', 'B', 'C', а второй уровень - уникальные значения 1 и 2.
Пример
Получим доступ к конкретному уровню мультииндекса по индексу:
import pandas as pd
# Создаем мультииндекс с тремя уровнями
index = pd.MultiIndex.from_tuples([
(1, 'a', True),
(1, 'b', False),
(2, 'a', True),
(2, 'b', False)
], names=['first', 'second', 'third'])
# Получаем первый уровень
first_level = index.levels[0]
print(first_level)
# Получаем второй уровень
second_level = index.levels[1]
print(second_level)
Результат выполнения кода:
Index([1, 2], dtype='int64', name='first')
Index(['a', 'b'], dtype='object', name='second')
Обратите внимание, что каждый уровень представлен как
отдельный объект Index со своим типом данных и именем.
Пример
Используем атрибут levels для проверки
уникальных значений на каждом уровне:
import pandas as pd
# Создаем мультииндекс с повторяющимися значениями
index = pd.MultiIndex.from_arrays([
['x', 'x', 'y', 'y', 'z'],
[1, 1, 2, 3, 3]
], names=['col1', 'col2'])
# Проверяем уникальные значения на каждом уровне
for i, level in enumerate(index.levels):
print(f"Level {i} unique values: {list(level)}")
Результат выполнения кода:
"Level 0 unique values: ['x', 'y', 'z']"
"Level 1 unique values: [1, 2, 3]"
Атрибут levels показывает только уникальные значения,
даже если в исходном мультииндексе были повторения.
Смотрите также
-
атрибут
names,
который возвращает имена уровней мультииндекса -
атрибут
codes,
который возвращает коды уровней мультииндекса -
атрибут
nlevels,
который возвращает количество уровней мультииндекса -
метод
get_level_values,
который возвращает значения конкретного уровня