บทนำ
เมธอด 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
พารามิเตอร์สำคัญ
| พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
ascending | True = น้อยไปมาก, False = มากไปน้อย | True |
axis | 0 = index (rows), 1 = columns | 0 |
inplace | True = แก้ไข inplace | False |
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() สำหรับเรียงตามค่าคอลัมน์