Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – การลบระดับ (Level) ออกจากดัชนีคอลัมน์หลายระดับใน Pandas DataFrame

บทความนี้จะสาธิตวิธีการลบระดับออกจากดัชนีคอลัมน์แบบหลายชั้น (Multi-level column index) ใน Pandas DataFrame โดยใช้เมธอด columns.droplevel()

ขั้นตอนการสร้าง Multi-level Column Index

ขั้นแรก เราสร้างดัชนีคอลัมน์แบบหลายชั้นโดยใช้ MultiIndex.from_tuples():

import pandas as pd
import numpy as np

items = pd.MultiIndex.from_tuples([
    ("Col 1", "Col 1", "Col 1"),
    ("Col 2", "Col 2", "Col 2"),
    ("Col 3", "Col 3", "Col 3")
])

การสร้าง DataFrame ด้วย MultiIndex

ต่อไป สร้างอาร์เรย์สำหรับดัชนีแถว และสร้าง DataFrame:

# สร้าง MultiIndex สำหรับแถว
arr = [
    np.array(['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']),
    np.array(['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC'])
]

# สร้าง DataFrame
dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr, columns=items)

# ตั้งชื่อให้กับดัชนีแถว
dataFrame.index.names = ['level 0', 'level 1']

การลบระดับที่ต้องการ

ใช้ droplevel() เพื่อลบระดับที่ระบุ (ในที่นี้คือระดับที่ 0):

dataFrame.columns = dataFrame.columns.droplevel(0)

ตัวอย่างโค้ดสมบูรณ์

import numpy as np
import pandas as pd

# สร้าง MultiIndex คอลัมน์
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
dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr, columns=items)
dataFrame.index.names = ['level 0', 'level 1']

print("DataFrame ก่อนลบระดับ:")
print(dataFrame)

# ลบระดับที่ 0
dataFrame.columns = dataFrame.columns.droplevel(0)

print("\nDataFrame หลังลบระดับ:")
print(dataFrame)

ผลลัพธ์ที่คาดหวัง

ก่อนลบระดับ: คอลัมน์จะมี 3 ระดับ (Col 1, Col 1, Col 1), (Col 2, Col 2, Col 2), (Col 3, Col 3, Col 3)

หลังลบระดับที่ 0: คอลัมน์จะเหลือเพียงระดับเดียว คือ Col 1, Col 2, Col 3

หมายเหตุ: เมธอด droplevel() สามารถระบุลำดับระดับที่ต้องการลบได้ (0 = ระดับแรก, 1 = ระดับที่สอง, เป็นต้น) หรือระบุชื่อระดับได้เช่นกัน