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

Python Pandas - Hoán đổi cấp độ trong MultiIndex với swaplevel()

Để hoán đổi (swap) vị trí của hai cấp độ trong MultiIndex, chúng ta sử dụng phương thức swaplevel(). Phương thức này nhận hai tham số là chỉ số hoặc tên của hai cấp độ cần đổi chỗ.

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'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))

3. Hoán đổi cấp độ

Hoán đổi cấp độ 0 ('rank') và cấp độ 2 ('points'):

print("\nHoán đổi cấp độ 0 và 2:\n", multiIndex.swaplevel(0, 2))

Ví dụ hoàn chỉnh

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)

# Hoán đổi cấp độ 0 và 2
print("\nSau swaplevel(0, 2):\n", multiIndex.swaplevel(0, 2))

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]]
Sau swaplevel(0, 2):
MultiIndex([(50, 'Peter', 2), (30, 'Chris', 4), (40, 'Andy', 3), (70, 'Jacob', 1)], names=['points', 'student', 'rank'])

Đặc điểm của swaplevel()

  • Chỉ hoán đổi 2 cấp độ mỗi lần gọi.
  • Chấp nhận chỉ số nguyên (0-based) hoặc tên cấp độ.
  • Trả về MultiIndex mới, không thay đổi đối tượng gốc.
  • Thứ tự các cấp độ còn lại giữ nguyên.

Khi nào dùng swaplevel()?

Khi chỉ cần đổi chỗ nhanh 2 cấp độ. Nếu cần sắp xếp lại nhiều cấp độ cùng lúc, hãy dùng reorder_levels().