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