So sortieren sie einen pandas-dataframe nach datum (mit beispielen)
Häufig möchten Sie möglicherweise einen Pandas-DataFrame basierend auf einer Spalte mit Datumsangaben sortieren. Glücklicherweise ist dies mit der Funktion sort_values() einfach zu bewerkstelligen.
Dieses Tutorial zeigt einige Beispiele für die praktische Verwendung dieser Funktion.
Beispiel 1: Nach Datumsspalte sortieren
Angenommen, wir haben den folgenden 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
Zuerst müssen wir die Funktion to_datetime() verwenden, um die Spalte „Datum“ in ein Datetime-Objekt umzuwandeln:
df[' date '] = pd. to_datetime (df[' date '])
Als Nächstes können wir den DataFrame anhand der Spalte „Datum“ mithilfe der Funktion sort_values() sortieren:
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
Standardmäßig sortiert diese Funktion Datumsangaben in aufsteigender Reihenfolge. Sie können jedoch „ascending=False“ angeben, um in absteigender Reihenfolge zu sortieren:
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
Beispiel 2: Sortieren nach mehreren Datumsspalten
Angenommen, wir haben den folgenden 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
Wir können die Funktion sort_values verwenden, um den DataFrame nach mehreren Spalten zu sortieren, indem wir der Funktion einfach mehrere Spaltennamen bereitstellen:
#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
Der DataFrame wird nun in aufsteigender Reihenfolge nach order_date und dann in aufsteigender Reihenfolge nach quitt_date sortiert.
Zusätzliche Ressourcen
So filtern Sie Pandas DataFrame-Zeilen nach Datum
So konvertieren Sie DateTime in Pandas in Datum
So konvertieren Sie Spalten in Pandas in DateTime
So sortieren Sie in Pandas sowohl nach Index als auch nach Spalte