Để xóa nhiều cấp độ khỏi MultiIndex sử dụng tên cấp độ, chúng ta dùng phương thức MultiIndex.droplevel() và truyền danh sách tên cấp độ cần xóa.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex 3 cấp độ
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
3. Xóa nhiều cấp độ bằng tên
Xóa cấp độ 'rank' và 'student', giữ lại 'points':
print("\nMultiIndex sau khi xóa 2 cấp độ:\n", multiIndex.droplevel(['rank', 'student']))
Ví dụ hoàn chỉnh
import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
print("MultiIndex gốc:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)
# Xóa cấp độ 'rank' và 'student'
print("\nMultiIndex sau khi xóa ['rank', 'student']:\n", multiIndex.droplevel(['rank', 'student']))
Kết quả đầu ra
MultiIndex gốc: MultiIndex([(2, 'Peter', 50), (4, 'Chris', 30), (3, 'Andy', 40), (1, 'Jacob', 70)], names=['rank', 'student', 'points']) Các cấp độ: [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]] MultiIndex sau khi xóa 2 cấp độ: Int64Index([50, 30, 40, 70], dtype='int64', name='points')
Lưu ý quan trọng
- Kết quả trả về là Index đơn cấp (Int64Index) chứ không còn là MultiIndex.
- Tham số có thể là: tên cấp độ (str), chỉ số (int), hoặc danh sách của chúng.
- Nếu xóa hết các cấp độ, sẽ lỗi (cần ít nhất 1 cấp độ).
- Phương thức này cũng áp dụng cho
DataFrame.index.droplevel()vàSeries.index.droplevel().