Jak posortować ramkę danych pandy według daty (z przykładami)


Często możesz chcieć posortować ramkę danych pand na podstawie kolumny zawierającej daty. Na szczęście można to łatwo zrobić za pomocą funkcji sort_values() .

W tym samouczku przedstawiono kilka przykładów praktycznego wykorzystania tej funkcji.

Przykład 1: Sortuj według kolumny daty

Załóżmy, że mamy następującą ramkę DataFrame pand:

 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

Najpierw musimy użyć funkcji to_datetime() , aby przekonwertować kolumnę „data” na obiekt typu datetime:

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

Następnie możemy posortować DataFrame na podstawie kolumny „data” za pomocą funkcji 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

Domyślnie ta funkcja sortuje daty w kolejności rosnącej. Możesz jednak określić rosnąco=Fałsz, aby posortować w kolejności malejącej:

 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

Przykład 2: sortowanie według wielu kolumn dat

Załóżmy, że mamy następującą ramkę DataFrame pand:

 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

Możemy użyć funkcji sort_values , aby posortować DataFrame po wielu kolumnach, po prostu podając do funkcji wiele nazw kolumn:

 #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 jest teraz posortowana w kolejności rosnącej według daty_zamówienia, a następnie w kolejności rosnącej według daty_potwierdzenia.

Dodatkowe zasoby

Jak filtrować wiersze Pandas DataFrame według daty
Jak przekonwertować DateTime na datę w Pandach
Jak przekonwertować kolumny na DateTime w Pandach
Jak sortować według indeksu i kolumny w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *