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

Python Pandas – แสดง Index ของ DataFrame ในรูปแบบ MultiIndex

บทความนี้สาธิตวิธีตั้งค่าและแสดง Index ของ DataFrame ในรูปแบบ MultiIndex (หลายระดับ) โดยใช้ set_index() และ append=True

โค้ดตัวอย่าง

import pandas as pd

# ข้อมูลต้นฉบับ
d = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']
}

# สร้าง DataFrame
dataFrame = pd.DataFrame(d)
print("DataFrame ต้นฉบับ:")
print(dataFrame)

# ตั้งค่า MultiIndex: เพิ่ม 'Car' เป็นระดับที่ 2 ของ Index
# append=True: เพิ่มเข้าไปใน Index เดิม (RangeIndex) ไม่ใช่แทนที่
# drop=False: เก็บคอลัมน์ 'Car' ไว้ใน DataFrame ด้วย
dataFrame.set_index(["Car"], inplace=True, append=True, drop=False)

print("\nMultiIndex:")
print(dataFrame.index)

print("\nDataFrame หลัง Set Index:")
print(dataFrame)

ผลลัพธ์

DataFrame ต้นฉบับ:
     Car Date_of_purchase
0    BMW       2020-10-10
1  Lexus       2020-10-12
2   Audi       2020-10-17
3 Mercedes       2020-10-16
4  Jaguar       2020-10-19
5 Bentley       2020-10-22

MultiIndex:
MultiIndex(levels=[[0, 1, 2, 3, 4, 5], ['Audi', 'BMW', 'Bentley', 'Jaguar', 'Lexus', 'Mercedes']],
           labels=[[0, 1, 2, 3, 4, 5], [1, 4, 0, 5, 3, 2]],
           names=[None, 'Car'])

DataFrame หลัง Set Index:
            Car Date_of_purchase
  Car                           
0 BMW       BMW       2020-10-10
1 Lexus     Lexus       2020-10-12
2 Audi      Audi       2020-10-17
3 Mercedes Mercedes       2020-10-16
4 Jaguar    Jaguar       2020-10-19
5 Bentley   Bentley       2020-10-22

อธิบาย MultiIndex Structure

  • Level 0: Index ต้นฉบับ (0, 1, 2, 3, 4, 5) - ไม่มีชื่อ (None)
  • Level 1: คอลัมน์ 'Car' - ชื่อระดับคือ 'Car'
  • Labels: ตำแหน่งใน Levels ของแต่ละแถว

การเข้าถึงข้อมูลด้วย MultiIndex

# เข้าถึงด้วย Tuple (Level 0, Level 1)
print(dataFrame.loc[(0, 'BMW')])

# Cross-section: ทุก Level 0 ที่ Level 1 = 'BMW'
print(dataFrame.xs('BMW', level='Car'))

# Reset กลับเป็น Index ปกติ
dataFrame.reset_index(inplace=True, drop=True)

การสร้าง MultiIndex โดยตรง

# สร้าง MultiIndex จาก Arrays
arrays = [
    ['A', 'A', 'B', 'B'],
    ['one', 'two', 'one', 'two']
]
index = pd.MultiIndex.from_arrays(arrays, names=['Letter', 'Number'])
df = pd.DataFrame({'Value': [1, 2, 3, 4]}, index=index)
print(df)