DataFrame-Zeilen innerhalb eines Datumsbereichs auswählen
In Python sind DataFrames ein leistungsstarkes Werkzeug zum Speichern und Bearbeiten von Tabellendaten. Eine häufig anzutreffende Aufgabe ist das Filtern von Zeilen basierend auf einem bestimmten Datumsbereich. Um dies zu erreichen, haben wir die folgenden Optionen:
Methode 1: Verwenden einer Booleschen Maske
Wenn Ihr DataFrame eine Datumsspalte mit dem Datentyp datetime64[ns] enthält, Sie können eine boolesche Maske erstellen, um Zeilen auszuwählen, die in den gewünschten Bereich fallen:
# Ensure date column is a datetime64 series df['date'] = pd.to_datetime(df['date']) # Create a boolean mask mask = (df['date'] > start_date) & (df['date'] <= end_date) # Select the sub-DataFrame sub_df = df.loc[mask]
Methode 2: Einen DatetimeIndex festlegen
Ein weiterer effizienter Ansatz besteht darin, die Datumsspalte als Index des DataFrame festzulegen und so einen DatetimeIndex zu erstellen:
df = df.set_index(['date']) # Select rows using index slicing sub_df = df.loc[start_date:end_date]
Diese Methode ist besonders nützlich für häufige Fälle Datumsbasierte Auswahlen, da sie im Vergleich zur Verwendung eines booleschen Werts eine schnellere Leistung bieten Maske.
Beispiel:
Betrachten Sie den folgenden DataFrame:
>>> df value date 0 0.2 2021-06-01 1 0.3 2021-06-05 2 0.4 2021-06-10 3 0.5 2021-06-15
Um Zeilen für den Monat Juni 2021 auszuwählen, können wir beides verwenden Methode:
Methode 1: Boolean Maske
mask = (df['date'] > '2021-06-01') & (df['date'] <= '2021-06-30') sub_df = df.loc[mask]
Methode 2: DatetimeIndex
df = df.set_index(['date']) sub_df = df.loc['2021-06-01':'2021-06-30']
Beide Methoden geben den folgenden Unterdatenrahmen zurück:
>>> sub_df value date 0 0.2 2021-06-01 1 0.3 2021-06-05 2 0.4 2021-06-10 3 0.5 2021-06-15
Das obige ist der detaillierte Inhalt vonWie wählt man in Python effizient DataFrame-Zeilen innerhalb eines bestimmten Datumsbereichs aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!