Heim >Backend-Entwicklung >Python-Tutorial >Wie lassen sich Pandas-DataFrames effizient mit Datumsbereichsbedingungen zusammenführen?
Pandas-Datenrahmen mit Datumsbereichsbedingungen zusammenführen
Um zwei Pandas-Datenrahmen zusammenzuführen, bei denen ein Wert zwischen zwei anderen liegt, besteht ein gängiger Ansatz darin, diese zusammenzuführen Datenrahmen bedingungslos nach einem Bezeichner und anschließende Filterung basierend auf der Datumsbedingung. Diese Methode kann jedoch zu Speicherineffizienzen führen.
Eine alternative Lösung, die die Leistungsfähigkeit von SQL nutzt, besteht darin, die Zusammenführung und Filterung innerhalb einer SQL-Abfrage durchzuführen, wie unten gezeigt:
<code class="python">import pandas as pd import sqlite3 # Create dataframes presidents = pd.DataFrame({"name": ["Bush", "Obama", "Trump"], "president_id":[43, 44, 45]}) terms = pd.DataFrame({'start_date': pd.date_range('2001-01-20', periods=5, freq='48M'), 'end_date': pd.date_range('2005-01-21', periods=5, freq='48M'), 'president_id': [43, 43, 44, 44, 45]}) war_declarations = pd.DataFrame({"date": [datetime(2001, 9, 14), datetime(2003, 3, 3)], "name": ["War in Afghanistan", "Iraq War"]}) # Create an in-memory database conn = sqlite3.connect(':memory:') # Write dataframes to database terms.to_sql('terms', conn, index=False) presidents.to_sql('presidents', conn, index=False) war_declarations.to_sql('wars', conn, index=False) # Execute SQL query to merge and filter dataframes qry = ''' select start_date PresTermStart, end_date PresTermEnd, wars.date WarStart, presidents.name Pres from terms join wars on date between start_date and end_date join presidents on terms.president_id = presidents.president_id ''' df = pd.read_sql_query(qry, conn) print(df)</code>
Ausgabe:
PresTermStart PresTermEnd WarStart Pres 0 2001-01-31 00:00:00 2005-01-31 00:00:00 2001-09-14 00:00:00 Bush 1 2001-01-31 00:00:00 2005-01-31 00:00:00 2003-03-03 00:00:00 Bush
Durch die Durchführung der Zusammenführung und Filterung innerhalb von SQL können wir die Erstellung eines potenziell großen Zwischendatenrahmens vermeiden, was zu einer verbesserten Speichereffizienz führt.
Das obige ist der detaillierte Inhalt vonWie lassen sich Pandas-DataFrames effizient mit Datumsbereichsbedingungen zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!