Wie kann man DataFrames basierend auf Bereichsbedingungen in Pandas effizient verknüpfen?

Mary-Kate Olsen
Freigeben: 2024-10-30 12:18:02
Original
870 Leute haben es durchsucht

How to Efficiently Join DataFrames Based on Range Conditions in Pandas?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage