Xóa hàng cụ thể từ DataFrame có chỉ mục đa cấp (MultiIndex) bằng phương thức drop() với tuple chỉ định.
Tạo DataFrame MultiIndex
import numpy as np
import pandas as pd
arr = [
np.array(['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']),
np.array(['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC'])
]
dataFrame = pd.DataFrame(
np.random.randn(9, 3), index=arr, columns=['Col 1', 'Col 2', 'Col 3']
)
dataFrame.index.names = ['level 0', 'level 1']
print("DataFrame gốc:\n", dataFrame)
Xóa hàng ('car', 'valueA')
dataFrame.drop(('car', 'valueA'), axis=0, inplace=True)
print("\nSau khi xóa ('car', 'valueA'):\n", dataFrame)
Kết quả
DataFrame gốc:
Col 1 Col 2 Col 3
level 0 level 1
car valueA 0.845965 -0.850953 -0.335662
valueB 0.534764 -0.107635 1.008855
valueC -0.507910 -0.664625 1.671653
bike valueA -0.475751 -0.244113 0.672352
valueB -0.273670 1.118635 0.428750
valueC -1.064504 -0.344729 0.481037
truck valueA -0.508659 1.352390 1.382799
valueB 1.144299 -0.092568 -1.071624
valueC -0.710767 0.967018 -0.047430
Sau khi xóa ('car', 'valueA'):
Col 1 Col 2 Col 3
level 0 level 1
car valueB 0.534764 -0.107635 1.008855
valueC -0.507910 -0.664625 1.671653
bike valueA -0.475751 -0.244113 0.672352
valueB -0.273670 1.118635 0.428750
valueC -1.064504 -0.344729 0.481037
truck valueA -0.508659 1.352390 1.382799
valueB 1.144299 -0.092568 -1.071624
valueC -0.710767 0.967018 -0.047430
Giải thích
- MultiIndex có 2 cấp: 'level 0' (car/bike/truck) và 'level 1' (valueA/B/C).
drop(('car', 'valueA'), axis=0)xóa hàng có key tuple đó.inplace=Truesửa đổi trực tiếp DataFrame gốc.- Có thể xóa nhiều hàng:
drop([('car','valueA'), ('bike','valueB')]).