Để lấy tên các cấp độ (level names) của MultiIndex, chúng ta sử dụng thuộc tính MultiIndex.names.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex có tên cấp độ
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
3. Lấy tên cấp độ
print("\nTên các cấp độ trong MultiIndex:\n", multiIndex.names)
Ví dụ hoàn chỉnh
import pandas as pd
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("MultiIndex:\n", multiIndex)
print("\nTên cấp độ:\n", multiIndex.names)
print("\nCác cấp độ:\n", multiIndex.levels)
Kết quả đầu ra
MultiIndex: MultiIndex([(1, 'John'), (2, 'Tim'), (3, 'Jacob'), (4, 'Chris'), (5, 'Keiron')], names=['ranks', 'student']) Tên cấp độ: ['ranks', 'student'] Các cấp độ: [[1, 2, 3, 4, 5], ['Chris', 'Jacob', 'John', 'Keiron', 'Tim']]
Đặc điểm của names
- Trả về list của string (hoặc None nếu cấp độ không có tên).
- Độ dài bằng
nlevels. - Có thể gán lại:
multiIndex.names = ['new_rank', 'new_student'].
Ứng dụng thực tế
# Lấy chỉ số cấp độ từ tên
level_idx = multiIndex.names.index('student') # 1
# Đặt tên mới
multiIndex.names = ['Rank', 'Student']
# Kiểm tra có tên không
all(name is not None for name in multiIndex.names) # True
Tên cấp độ quan trọng khi dùng reorder_levels(), droplevel(), set_levels() với tham số tên, và khi chuyển sang DataFrame (to_frame() dùng tên làm tên cột).