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

Python Pandas - สร้าง MultiIndex จาก DataFrame

MultiIndex (Hierarchical Index)** คือดัชนีที่มีหลายระดับ (levels) ช่วยจัดการข้อมูลมิติสูงได้ดีขึ้น ใน Pandas สร้างได้จาก DataFrame ด้วย pd.MultiIndex.from_frame()

ขั้นตอนการทำงาน

1. สร้าง Dictionary ของข้อมูล

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']
}

2. สร้าง DataFrame

dataFrame = pd.DataFrame(d)

3. สร้าง MultiIndex จาก DataFrame

multi_idx = pd.MultiIndex.from_frame(dataFrame)
print(multi_idx)

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

import pandas as pd

# Dictionary of lists
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:\n", dataFrame)

# สร้าง MultiIndex
multi_idx = pd.MultiIndex.from_frame(dataFrame)
print("\nMultiIndex:\n", multi_idx)

ผลลัพธ์

MultiIndex([
    ('BMW', '2020-10-10'),
    ('Lexus', '2020-10-12'),
    ('Audi', '2020-10-17'),
    ('Mercedes', '2020-10-16'),
    ('Jaguar', '2020-10-19'),
    ('Bentley', '2020-10-22')
], names=['Car', 'Date_of_purchase'])

การใช้งาน MultiIndex

  • ตั้งเป็น index ของ DataFrame อื่น: df.set_index(multi_idx)
  • เลือกข้อมูลระดับหนึ่ง: df.loc['BMW'] หรือ df.xs('BMW', level='Car')
  • รองรับการ sort, groupby, pivot ได้อย่างมีประสิทธิภาพ

วิธีสร้าง MultiIndex อื่นๆ

# 1. from_tuples
pd.MultiIndex.from_tuples([('BMW', '2020-10-10'), ('Lexus', '2020-10-12')])

# 2. from_arrays
pd.MultiIndex.from_arrays([['BMW', 'Lexus'], ['2020-10-10', '2020-10-12']], names=['Car', 'Date'])

# 3. from_product (Cartesian product)
pd.MultiIndex.from_product([['BMW', 'Lexus'], ['2020', '2021']], names=['Car', 'Year'])