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

Python Pandas: เรียงลำดับ Index ด้วย sort_index()

บทนำ

เมธอด sort_index() ใช้เรียงลำดับแถว (rows) ตามค่า index สามารถเรียง ascending (น้อยไปมาก) หรือ descending (มากไปน้อย) ได้

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


import pandas as pd

# DataFrame ที่ index ไม่เรียง
df = pd.DataFrame(
    [100, 150, 200, 250, 250, 500],
    index=[4, 8, 2, 9, 15, 11],
    columns=['Col1']
)

print("DataFrame ต้นทาง (index ไม่เรียง):")
print(df)

# เรียง index ascending (default)
df_sorted = df.sort_index()
print("\nหลัง sort_index() ascending:")
print(df_sorted)

# เรียง index descending
df_desc = df.sort_index(ascending=False)
print("\nหลัง sort_index(ascending=False):")
print(df_desc)

ผลลัพธ์


DataFrame ต้นทาง (index ไม่เรียง):
    Col1
4   100
8   150
2   200
9   250
15  250
11  500

หลัง sort_index() ascending:
    Col1
2   200
4   100
8   150
9   250
11  500
15  250

หลัง sort_index(ascending=False):
    Col1
15  250
11  500
9   250
8   150
4   100
2   200

พารามิเตอร์สำคัญ

พารามิเตอร์คำอธิบายค่าเริ่มต้น
ascendingTrue = น้อยไปมาก, False = มากไปน้อยTrue
axis0 = index (rows), 1 = columns0
inplaceTrue = แก้ไข inplaceFalse
kind'quicksort', 'mergesort', 'heapsort', 'stable''quicksort'
na_position'first'/'last' - ตำแหน่ง NaN'last'
sort_remainingสำหรับ MultiIndex เรียงระดับต่อไปTrue

การใช้งานกับ MultiIndex


# MultiIndex DataFrame
df_multi = pd.DataFrame(
    {'Value': [10, 20, 30, 40]},
    index=pd.MultiIndex.from_tuples([
        ('B', 2), ('A', 1), ('B', 1), ('A', 2)
    ], names=['Letter', 'Number'])
)

print("MultiIndex ก่อนเรียง:")
print(df_multi)

# เรียงทุกระดับ
df_multi_sorted = df_multi.sort_index()
print("\nหลัง sort_index():")
print(df_multi_sorted)

# เรียงระดับเฉพาะ
df_multi.sort_index(level='Number', inplace=True)

คู่คู่: sort_values()

  • sort_index(): เรียงตาม index (แถว)
  • sort_values(): เรียงตาม ค่าในคอลัมน์

# เรียงตามค่าในคอลัมน์ Col1
df.sort_values('Col1')

# เรียงตาม index แล้วตามค่า
df.sort_index().sort_values('Col1')

สรุป

df.sort_index() เรียง index ascending โดย default ใช้ ascending=False สำหรับ descending รองรับ MultiIndex ด้วย level parameter คู่กับ sort_values() สำหรับเรียงตามค่าคอลัมน์