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

Python – Loại bỏ một cấp khỏi chỉ mục cột đa cấp trong Pandas DataFrame

Để 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.