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

Python Pandas - วิธีจัดเรียง MultiIndex ที่ระดับเฉพาะในลำดับถอยหลัง

บทนำ

ใช้ MultiIndex.sortlevel() พร้อม level และ ascending=False เพื่อจัดเรียงระดับเฉพาะแบบ descending

ขั้นตอน

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) แบบ descending

print("\nSort MultiIndex at the requested level in descending order...\n",
      multiIndex.sortlevel(1, ascending=False))

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

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 in descending order...\n",
      multiIndex.sortlevel(1, ascending=False))

ผลลัพธ์

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 in descending order...
(MultiIndex([(2, 'Peter'), (1, 'Jacob'), (4, 'Chris'), (3, 'Andy')],
            names=['ranks', 'student']),
 array([0, 3, 1, 2], dtype=int64))

คำอธิบาย

  • คืนค่า tuple: (sorted_MultiIndex, indexer_array)
  • จัดเรียงตามระดับ 1 (student) จาก Z→A: Peter, Jacob, Chris, Andy
  • indexer_array แสดงตำแหน่งเดิมของแต่ละแถวหลังจัดเรียง
  • ascending=False ทำให้เรียงจากมากไปน้อย / Z ไป A