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, um 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]Diese Methode bietet eine höhere Effizienz für große Datensätze 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3