Để loại bỏ một cấp khỏi chỉ mục cột đa cấp (MultiIndex), hãy sử dụng phương thức columns.droplevel(). Chúng ta sử dụng MultiIndex.from_tuples() để tạo chỉ mục theo cột.
Tạo chỉ mục đa cấp theo cột
import pandas as pd
items = pd.MultiIndex.from_tuples([
("Col 1", "Col 1", "Col 1"),
("Col 2", "Col 2", "Col 2"),
("Col 3", "Col 3", "Col 3")
])
Tạo mảng MultiIndex và DataFrame
import numpy as np
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=items)
Đặt tên cho chỉ mục
dataFrame.index.names = ['level 0', 'level 1']
Loại bỏ cấp tại vị trí 0
dataFrame.columns = dataFrame.columns.droplevel(0)
Ví dụ hoàn chỉnh
import numpy as np
import pandas as pd
items = pd.MultiIndex.from_tuples([
("Col 1", "Col 1", "Col 1"),
("Col 2", "Col 2", "Col 2"),
("Col 3", "Col 3", "Col 3")
])
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=items)
dataFrame.index.names = ['level 0', 'level 1']
print("DataFrame...\n", dataFrame)
print("\nĐang loại bỏ cấp...\n")
dataFrame.columns = dataFrame.columns.droplevel(0)
print("DataFrame đã cập nhật..\n", dataFrame)
Kết quả
Đoạn mã trên sẽ tạo ra DataFrame với chỉ mục cột 3 cấp, sau đó loại bỏ cấp đầu tiên (cấp 0), để lại chỉ mục cột 2 cấp.