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

Python Pandas - Sắp xếp lại cấp độ MultiIndex bằng tên cấp độ

Để sắp xếp lại các cấp độ trong MultiIndex sử dụng tên cấp độ thay vì chỉ số, chúng ta truyền danh sách tên cấp độ cho tham số order của phương thức MultiIndex.reorder_levels().

Các bước thực hiện

1. Import thư viện

import pandas as pd

2. Tạo MultiIndex có tên cấp độ

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))

3. Sắp xếp lại bằng tên cấp độ

print("\nSắp xếp lại bằng tên cấp độ:\n", multiIndex.reorder_levels(order=['student', 'rank', 'points']))

Ví dụ hoàn chỉnh (kèm so sánh swaplevel)

import pandas as pd

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))

print("MultiIndex gốc:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)

# swaplevel() - chỉ đổi chỗ 2 cấp độ
print("\nSwap level 0 và 2:\n", multiIndex.swaplevel(0, 2))

# reorder_levels() với tên cấp độ - linh hoạt hơn
print("\nReorder bằng tên ['student', 'rank', 'points']:\n", multiIndex.reorder_levels(order=['student', 'rank', 'points']))

Kết quả đầu ra

MultiIndex gốc:
MultiIndex([(2, 'Peter', 50), (4, 'Chris', 30), (3, 'Andy', 40), (1, 'Jacob', 70)], names=['rank', 'student', 'points'])
Các cấp độ:
[[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]
Swap level 0 và 2:
MultiIndex([('Peter', 2, 50), ('Chris', 4, 30), ('Andy', 3, 40), ('Jacob', 1, 70)], names=['student', 'rank', 'points'])
Reorder bằng tên ['student', 'rank', 'points']:
MultiIndex([('Peter', 2, 50), ('Chris', 4, 30), ('Andy', 3, 40), ('Jacob', 1, 70)], names=['student', 'rank', 'points'])

So sánh swaplevel() vs reorder_levels()

Phương thứcĐặc điểm
swaplevel(i, j)Chỉ hoán đổi 2 cấp độ, đơn giản, nhanh
reorder_levels(order=[...])Sắp xếp tùy ý nhiều cấp độ, chấp nhận tên hoặc chỉ số

Sử dụng reorder_levels() khi cần sắp xếp phức tạp hơn 2 cấp độ.