كيفية فرز إطار بيانات الباندا حسب التاريخ (مع أمثلة)
في كثير من الأحيان قد ترغب في فرز 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() لتحويل عمود “التاريخ” إلى كائن وقت وتاريخ:
df[' date '] = pd. to_datetime (df[' date '])
بعد ذلك، يمكننا فرز DataFrame بناءً على عمود “التاريخ” باستخدام الدالة 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