Heim > Backend-Entwicklung > Python-Tutorial > Wie filtere ich DataFrame-Zeilen effizient nach Datumsbereich?

Wie filtere ich DataFrame-Zeilen effizient nach Datumsbereich?

Barbara Streisand
Freigeben: 2024-12-12 16:30:11
Original
937 Leute haben es durchsucht

How to Efficiently Filter DataFrame Rows by Date Range?

DataFrame-Zeilen innerhalb eines angegebenen Datumsbereichs abfragen

Diese Frage befasst sich mit der Herausforderung, Zeilen innerhalb eines bestimmten Datumsbereichs aus einem DataFrame zu extrahieren, der Folgendes enthält: Datumsspalte. Die bereitgestellte Lösung bietet zwei Ansätze, um dies zu erreichen.

Methode 1: Verwenden einer booleschen Maske

Um diese Methode zu übernehmen, stellen Sie sicher, dass „Datum“ in Ihrem DataFrame ein darstellt Serie mit dtype datetime64[ns]. Führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine boolesche Maske: Geben Sie start_date- und end_date-Parameter an, die datetime.datetimes, np.datetime64s, pd.Timestamps oder datetime-Zeichenfolgen sein können. Erstellen Sie eine boolesche Maske, die für Zeilen, die die Datumsbereichskriterien erfüllen, als „True“ ausgewertet wird.
  2. Unterdatenrahmen auswählen: Verwenden Sie df.loc[mask], um die Zeilen zu extrahieren, die die Maskenbedingung erfüllen . Um den vorhandenen DataFrame zu überschreiben, wenden Sie alternativ die Maske als df = df.loc[mask] an.

Methode 2: Zuweisen eines DatetimeIndex

Optimal für In Szenarien mit häufigen Datumsauswahlen umfasst dieser Ansatz das Festlegen der Datumsspalte als index:

  1. DatetimeIndex festlegen: Konvertieren Sie die Datumsspalte mit df.set_index(['date']) in einen DatetimeIndex.
  2. Zeilen auswählen nach Datum: Nutzen Sie df.loc[start_date:end_date], um Zeilen basierend auf dem Datumsbereich zu filtern. Beachten Sie, dass sowohl Startdatum als auch Enddatum in dieser Auswahl enthalten sind.

Beispiel:

Beachten Sie unter Verwendung des in der Antwort bereitgestellten Codes die folgende Abbildung:

import pandas as pd

df = pd.DataFrame({'date': pd.date_range('2023-03-01', periods=10)})
df['value'] = np.random.randn(10)

# Boolean Mask Approach
start_date = '2023-03-03'
end_date = '2023-03-08'
mask = (df['date'] > start_date) & (df['date'] <= end_date)
df_subset = df.loc[mask]

# DatetimeIndex Approach
df = df.set_index('date')
df_subset = df.loc[start_date:end_date]
Nach dem Login kopieren

Dies würde zwei DataFrames ergeben, die Zeilen enthalten, die dem angegebenen Datumsbereich entsprechen.

Das obige ist der detaillierte Inhalt vonWie filtere ich DataFrame-Zeilen effizient nach Datumsbereich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage