Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man DataFrames basierend auf Datetime-Bereichen in Pandas effizient verknüpfen?
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!