Để xóa một cấp độ khỏi MultiIndex sử dụng chỉ số cấp độ (level number), chúng ta dùng phương thức MultiIndex.droplevel() với tham số là chỉ số nguyên (0-based).
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex 2 cấp độ
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
3. Xóa cấp độ bằng chỉ số
Xóa cấp độ 1 (cấp độ thứ 2 - 'student'):
print("\nMultiIndex sau khi xóa cấp độ 1:\n", multiIndex.droplevel(1))
Ví dụ hoàn chỉnh
import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("MultiIndex gốc:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)
# Xóa cấp độ 1 (student)
print("\nMultiIndex sau khi xóa cấp độ 1:\n", multiIndex.droplevel(1))
Kết quả đầu ra
MultiIndex gốc: MultiIndex([(2, 'Peter'), (4, 'Chris'), (3, 'Andy'), (1, 'Jacob')], names=['ranks', 'student']) Các cấp độ: [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']] MultiIndex sau khi xóa cấp độ: Int64Index([2, 4, 3, 1], dtype='int64', name='ranks')
So sánh các cách xóa cấp độ
| Cách gọi | Mô tả | Ví dụ |
|---|---|---|
droplevel(0) | Xóa cấp độ đầu tiên (chỉ số) | Xóa 'ranks' |
droplevel('student') | Xóa cấp độ tên 'student' | Tương đương droplevel(1) |
droplevel([0, 1]) | Xóa cấp độ 0 và 1 | Xóa cả 2, lỗi nếu chỉ còn 1 cấp |
Kết quả giống hệt nhau whether dùng tên hay chỉ số. Chọn cách nào tùy theo code dễ đọc hơn.