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ể theo thứ tự giảm dần

Để sắp xếp MultiIndex tại một cấp độ cụ thể theo thứ tự giảm dần (descending), chúng ta sử dụng phương thức MultiIndex.sortlevel() với tham số ascending=False.

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 giảm dần

print("\nSắp xếp cấp độ 1 giảm dần:\n", multiIndex.sortlevel(1, ascending=False))

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) giảm dần
print("\nSắp xếp cấp độ 1 giảm dần:\n", multiIndex.sortlevel(1, ascending=False))

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 giảm dần:
(MultiIndex([(2, 'Peter'), (1, 'Jacob'), (4, 'Chris'), (3, 'Andy')], names=['ranks', 'student']), array([0, 3, 1, 2], dtype=int64))

Giải thích kết quả

Phương thức sortlevel() trả về một tuple gồm 2 phần tử:

  1. MultiIndex mới đã sắp xếp: [('Peter'), ('Jacob'), ('Chris'), ('Andy')] - theo thứ tự Z-A.
  2. Mảng chỉ số (indexer): array([0, 3, 1, 2]) - vị trí cũ của các phần tử trong MultiIndex mới.

Mảng chỉ số hữu ích để sắp xếp đồng bộ DataFrame/Series cùng index.

Lưu ý

  • sortlevel() đã được deprecated kể từ Pandas 1.1.0, thay bằng sort_index(level=...).
  • Cú pháp mới: multiIndex.sort_index(level=1, ascending=False).