Beste Möglichkeit zum Verbinden/Zusammenführen nach Bereich in Pandas
Bei der Datenanalyse kommt es häufig vor, dass Datenrahmen basierend auf verknüpft oder zusammengeführt werden müssen eine bestimmte Bereichsbedingung. Ein Ansatz besteht darin, einen Cross-Join mit einer Dummy-Spalte zu verwenden. Dies kann jedoch ineffizient und komplex sein. Eine elegantere und effizientere Lösung ist die Verwendung von Numpy Broadcasting.
Numpy Broadcasting
Numpy Broadcasting ermöglicht es uns, elementweise Operationen zwischen Arrays unterschiedlicher Form durchzuführen. Dies kann genutzt werden, um zu bestimmen, welche Werte in einem Datenrahmen eine bestimmte Bereichsbedingung erfüllen.
Einrichtung
Betrachten Sie zwei Datenrahmen: A mit den Spalten A_id und A_value und B mit Spalten B_id, B_low und B_high. Wir wollen A und B so verbinden, dass A_value zwischen B_low und B_high liegt.
Implementierung
<code class="python">import numpy as np # Convert dataframes to arrays a = A.A_value.values bh = B.B_high.values bl = B.B_low.values # Determine matching rows and columns i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh)) # Join corresponding rows from A and B joined = pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1) # Print joined dataframe print(joined)</code>
Diese Methode nutzt elementweise Vergleiche und Broadcasting zur effizienten Identifizierung und verbinde die Zeilen von A und B, die die Bereichsbedingung erfüllen. Es ist sowohl elegant als auch effizient und vermeidet die Notwendigkeit von Schleifen oder Dummy-Spalten.
Das obige ist der detaillierte Inhalt vonWie kann man DataFrames basierend auf Bereichsbedingungen in Pandas effizient verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!