Nach Bereich in Pandas verbinden
Bei der Datenbearbeitung mit Pandas besteht eine häufige Aufgabe darin, zwei Datenrahmen basierend auf einer Bereichsbedingung zusammenzuführen. Dazu gehört die Identifizierung der Zeilen in Datenrahmen A, in denen die Werte in einer bestimmten Spalte innerhalb eines angegebenen Bereichs in Datenrahmen B liegen.
Ein Ansatz für diese Aufgabe besteht darin, in beiden Datenrahmen eine Dummy-Spalte zu erstellen und einen Cross-Join mit durchzuführen diese Dummy-Spalte und filtert dann die Zeilen heraus, die die Bereichskriterien nicht erfüllen. Diese Methode kann jedoch für große Datensätze ineffizient sein.
Eine alternative Lösung ist die Verwendung von Numpy Broadcasting, einer leistungsstarken Technik zur Durchführung elementweiser Operationen an Arrays. Durch Konvertieren der relevanten Spalten in den Datenrahmen A und B in Numpy-Arrays können wir logische Operatoren anwenden, um A_value mit den B_low- und B_high-Werten zu vergleichen und die Zeilen zu identifizieren, die die Bereichsbedingung erfüllen.
import numpy as np # Convert to numpy arrays a = A.A_value.values bh = B.B_high.values bl = B.B_low.values # Find intersecting indices i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh)) # Merge and align dataframes result = pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1) print(result)
Diese Methode bietet Höhere Effizienz bei großen Datensätzen im Vergleich zum Dummy-Spalten-Ansatz. Darüber hinaus ermöglicht es die einfache Implementierung von Links- oder Rechts-Joins durch Anpassen der Logik im Numpy-Broadcasting-Schritt.
Das obige ist der detaillierte Inhalt vonWie lassen sich Pandas-DataFrames basierend auf einer Bereichsbedingung effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!