Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Pandas - Sắp xếp MultiIndex (mặc định cấp độ 0)

Để 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.