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

Python Pandas - Xóa nhiều cấp độ khỏi MultiIndex bằng tên cấp độ

Để xóa nhiều cấp độ khỏi MultiIndex sử dụng tên cấp độ, chúng ta dùng phương thức MultiIndex.droplevel() và truyền danh sách tên cấp độ cần xóa.

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

1. Import thư viện

import pandas as pd

2. Tạo MultiIndex 3 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. Xóa nhiều cấp độ bằng tên

Xóa cấp độ 'rank' và 'student', giữ lại 'points':

print("\nMultiIndex sau khi xóa 2 cấp độ:\n", multiIndex.droplevel(['rank', 'student']))

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)

# Xóa cấp độ 'rank' và 'student'
print("\nMultiIndex sau khi xóa ['rank', 'student']:\n", multiIndex.droplevel(['rank', 'student']))

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]]
MultiIndex sau khi xóa 2 cấp độ:
Int64Index([50, 30, 40, 70], dtype='int64', name='points')

Lưu ý quan trọng

  • Kết quả trả về là Index đơn cấp (Int64Index) chứ không còn là MultiIndex.
  • Tham số có thể là: tên cấp độ (str), chỉ số (int), hoặc danh sách của chúng.
  • Nếu xóa hết các cấp độ, sẽ lỗi (cần ít nhất 1 cấp độ).
  • Phương thức này cũng áp dụng cho DataFrame.index.droplevel() và Series.index.droplevel().