Để sắp xếp toàn bộ MultiIndex theo thứ tự mặc định (cấp độ 0), chúng ta sử dụng phương thức MultiIndex.sortlevel() không truyền tham số level.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex
arrays = [[2, 4, 3, 1], ['John', 'Tim', 'Jacob', 'Chris']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
3. Sắp xếp MultiIndex (mặc định level=0)
print("\nSắp xếp MultiIndex (cấp độ 0):\n", multiIndex.sortlevel())
Ví dụ hoàn chỉnh
import pandas as pd
arrays = [[2, 4, 3, 1], ['John', 'Tim', 'Jacob', 'Chris']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("MultiIndex gốc:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)
# Sắp xếp mặc định cấp độ 0
print("\nSắp xếp MultiIndex:\n", multiIndex.sortlevel())
Kết quả đầu ra
MultiIndex gốc: MultiIndex([(2, 'John'), (4, 'Tim'), (3, 'Jacob'), (1, 'Chris')], names=['ranks', 'student']) Các cấp độ: [[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']] Sắp xếp MultiIndex: (MultiIndex([(1, 'Chris'), (2, 'John'), (3, 'Jacob'), (4, 'Tim')], names=['ranks', 'student']), array([3, 0, 2, 1], dtype=int64))
Giải thích
- Sắp xếp theo cấp độ 0 ('ranks'): 1 → 2 → 3 → 4.
- Khi cấp độ 0 trùng nhau, cấp độ 1 sẽ được sắp xếp theo (không demo ở đây).
- Trả về tuple: (MultiIndex đã sắp xếp, indexer array).
Cú pháp hiện đại
# Tương đương
multiIndex.sort_index()
multiIndex.sort_index(level=0)
# Sắp xếp nhiều cấp độ
multiIndex.sort_index(level=[0, 1])
multiIndex.sort_index(level=['ranks', 'student'])
sort_index() là phương thức chuẩn, thay thế sortlevel() đã deprecated.