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

Python Pandas - วิธีจัดเรียง MultiIndex ที่ระดับเฉพาะ

บทนำ

ใช้ MultiIndex.sortlevel() พร้อมระบุ level เพื่อจัดเรียงตามระดับนั้น (ค่าเริ่มต้น ascending=True)

ขั้นตอน

1. นำเข้าไลบรารีและสร้าง MultiIndex

import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

2. จัดเรียงระดับ 1 (student) แบบ ascending (ค่าเริ่มต้น)

print("\nSort MultiIndex at the requested level...\n", multiIndex.sortlevel(1))

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

import pandas as pd

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

print("The Multi-index...\n", multiIndex)
print("\nThe levels in Multi-index...\n", multiIndex.levels)
print("\nSort MultiIndex at the requested level...\n", multiIndex.sortlevel(1))

ผลลัพธ์

The Multi-index...
MultiIndex([(2, 'Peter'), (4, 'Chris'), (3, 'Andy'), (1, 'Jacob')],
           names=['ranks', 'student'])

The levels in Multi-index...
[[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]

Sort MultiIndex at the requested level...
(MultiIndex([(3, 'Andy'), (4, 'Chris'), (1, 'Jacob'), (2, 'Peter')],
            names=['ranks', 'student']),
 array([2, 1, 3, 0], dtype=int64))

คำอธิบาย

  • จัดเรียงตามระดับ 1 (student) แบบ A→Z: Andy, Chris, Jacob, Peter
  • คืนค่า (sorted_MultiIndex, indexer) โดย indexer บอกตำแหน่งเดิม
  • ไม่ระบุ ascending จะเป็น True (น้อยไปมาก / A-Z)