Як відсортувати pandas dataframe за датою (з прикладами)


Часто ви можете відсортувати pandas DataFrame на основі стовпця, що містить дати. На щастя, це легко зробити за допомогою функції sort_values() .

Цей підручник демонструє кілька прикладів практичного використання цієї функції.

Приклад 1: сортування за стовпцем дати

Припустімо, що у нас є наступні pandas 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: сортування за кількома стовпцями дати

Припустімо, що у нас є наступні pandas 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, а потім у порядку зростання за receipt_date.

Додаткові ресурси

Як фільтрувати рядки Pandas DataFrame за датою
Як перетворити DateTime на дату в Pandas
Як перетворити стовпці на DateTime у Pandas
Як сортувати як за індексом, так і за стовпцем у Pandas

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *