วิธีจัดเรียง pandas dataframe ตามวันที่ (พร้อมตัวอย่าง)


บ่อยครั้งที่คุณอาจต้องการเรียงลำดับ DataFrame ของแพนด้าตามคอลัมน์ที่มีวันที่ โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน sort_values()

บทช่วยสอนนี้แสดงตัวอย่างการใช้งานฟังก์ชันนี้ในทางปฏิบัติหลายตัวอย่าง

ตัวอย่างที่ 1: จัดเรียงตามคอลัมน์วันที่

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
                   'customers': [2, 6, 9, 7],
                   'date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

   sales customers date
0 4 2 2020-01-25
1 11 6 2020-01-18
2 13 9 2020-01-22
3 9 7 2020-01-21

ขั้นแรก เราจำเป็นต้องใช้ฟังก์ชัน to_datetime() เพื่อแปลงคอลัมน์ ‘date’ ให้เป็นวัตถุ datetime:

 df[' date '] = pd. to_datetime (df[' date '])

ต่อไป เราสามารถจัดเรียง DataFrame ตามคอลัมน์ ‘date’ โดยใช้ฟังก์ชัน sort_values() :

 df. sort_values (by=' date ')

        sales customers date
1 11 6 2020-01-18
3 9 7 2020-01-21
2 13 9 2020-01-22
0 4 2 2020-01-25

ตามค่าเริ่มต้น ฟังก์ชันนี้จะเรียงลำดับวันที่จากน้อยไปหามาก อย่างไรก็ตาม คุณสามารถระบุ ascending=False เพื่อเรียงลำดับจากมากไปน้อย:

 df. sort_values (by=' date ', ascending= False )

	sales customers date
0 4 2 2020-01-25
2 13 9 2020-01-22
3 9 7 2020-01-21
1 11 6 2020-01-18

ตัวอย่างที่ 2: จัดเรียงตามคอลัมน์วันที่หลายคอลัมน์

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'person': ['A', 'B', 'C', 'D'],
                   'order_date': ['2020-01-15', '2020-01-15', '2020-01-20', '2020-01-20'],
                   'receive_date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

  person order_date receive_date
0 A 2020-01-15 2020-01-25
1 B 2020-01-15 2020-01-18
2 C 2020-01-20 2020-01-22
3 D 2020-01-20 2020-01-21

เราสามารถใช้ฟังก์ชัน sort_values เพื่อจัดเรียง DataFrame ในหลายคอลัมน์โดยเพียงแค่ระบุชื่อคอลัมน์หลายคอลัมน์ให้กับฟังก์ชัน:

 #convert both date columns to datetime objects
df[['order_date','receive_date']] = df[['order_date','receive_date']]. apply (pd. to_datetime )

#sort DateFrame by order_date, then by receive_date
df. sort_values (by=['order_date', 'receive_date'])

        person order_date receive_date
1 B 2020-01-15 2020-01-18
0 A 2020-01-15 2020-01-25
3 D 2020-01-20 2020-01-21
2 C 2020-01-20 2020-01-22

ขณะนี้ DataFrame ถูกจัดเรียงจากน้อยไปหามากตาม order_date จากนั้นเรียงลำดับจากน้อยไปหามากตามใบเสร็จรับเงิน

แหล่งข้อมูลเพิ่มเติม

วิธีกรองแถว Pandas DataFrame ตามวันที่
วิธีแปลง DateTime เป็นวันที่ใน Pandas
วิธีแปลงคอลัมน์เป็น DateTime ใน Pandas
วิธีจัดเรียงตามดัชนีและคอลัมน์ใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *