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

Python Pandas - Sắp xếp MultiIndex ở cấp độ cụ thể

Để sắp xếp MultiIndex tại một cấp độ cụ thể theo thứ tự tăng dần (mặc định), chúng ta sử dụng phương thức MultiIndex.sortlevel() với tham số level chỉ định cấp độ cần sắp xếp.

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], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

3. Sắp xếp tại cấp độ 1 (mặc định tăng dần)

print("\nSắp xếp cấp độ 1 tăng dần:\n", multiIndex.sortlevel(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)

# Sắp xếp tại cấp độ 1 (student) tăng dần
print("\nSắp xếp cấp độ 1 tăng dần:\n", multiIndex.sortlevel(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']]
Sắp xếp cấp độ 1 tăng dần:
(MultiIndex([(3, 'Andy'), (4, 'Chris'), (1, 'Jacob'), (2, 'Peter')], names=['ranks', 'student']), array([2, 1, 3, 0], dtype=int64))

Giải thích

  • Kết quả sắp xếp theo cấp độ 'student': Andy → Chris → Jacob → Peter (A-Z).
  • Trả về tuple: (MultiIndex đã sắp xếp, mảng indexer).
  • Mảng indexer [2, 1, 3, 0] nghĩa: phần tử mới 0 từ cũ 2, phần tử mới 1 từ cũ 1, v.v.

Cú pháp hiện đại (Pandas ≥ 1.1.0)

# Cũ (deprecated)
multiIndex.sortlevel(1)

# Mới (khuyên dùng)
multiIndex.sort_index(level=1)
multiIndex.sort_index(level='student')  # dùng tên cấp độ

Cú sách mới nhất quán hơn và hỗ trợ thêm các tham số như ascending, sort_remaining.