Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man DataFrames basierend auf Datetime-Bereichen in Pandas effizient verknüpfen?

Wie kann man DataFrames basierend auf Datetime-Bereichen in Pandas effizient verknüpfen?

DDD
DDDOriginal
2024-12-13 05:42:09159Durchsuche

How to Efficiently Join DataFrames Based on Datetime Ranges in Pandas?

Datenrahmen mit Spaltenwerten innerhalb des Bereichs verbinden

Gegeben sind zwei Datenrahmen, df_1 und df_2, wobei df_1 eine Datums-/Uhrzeitspalte und die Werte A und B enthält und df_2 Bereiche von enthält Da es sich um Datums-/Uhrzeitwerte und entsprechende Ereignisinformationen handelt, besteht eine häufige Aufgabe darin, diese Datenrahmen basierend auf der Bedingung zusammenzuführen, in der die Datums-/Uhrzeitwerte vorliegen df_1 liegen innerhalb der in df_2 angegebenen Bereiche.

Ein einfacher Ansatz, dies zu erreichen, besteht darin, einen Intervallindex aus der Start- und Endspalte von df_2 zu erstellen und den geschlossenen Parameter auf beide zu setzen. Dadurch wird sichergestellt, dass die Bereiche inklusiv sind.

df_2.index = pd.IntervalIndex.from_arrays(df_2['start'],df_2['end'],closed='both')

Sobald der Intervallindex erstellt ist, können wir die get_loc-Methode des IntervalIndex verwenden, um den Bereich zu finden, der den Datums-/Uhrzeitwert von df_1 für jede Zeile enthält.

df_1['event'] = df_1['timestamp'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)]['event'])

Durch die Anwendung dieser Funktion auf jeden Wert in der datetime-Spalte von df_1 können wir eine neue Spalte, event, füllen, die die entsprechenden Ereignisinformationen von enthält df_2 für jede Zeile in df_1.

Dieser Ansatz bietet eine effiziente Möglichkeit, Datenrahmen basierend auf einer Bereichsbedingung zu verbinden, indem die leistungsstarken Intervallindizierungsfunktionen von Pandas genutzt werden. Die Ausgabe ist ein Datenrahmen mit allen Spalten von df_1 und df_2, wobei die Ereignisspalte die übereinstimmenden Ereignisse für jede Zeile in df_1 bereitstellt.

Das obige ist der detaillierte Inhalt vonWie kann man DataFrames basierend auf Datetime-Bereichen in Pandas effizient verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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