Heim > Artikel > Backend-Entwicklung > Wie füge ich DataFrames nach Bereichsbedingung in Pandas mithilfe von Numpy Broadcasting zusammen?
Im Bereich der Datenanalyse ist das Kombinieren von Daten aus mehreren Quellen eine häufige Aufgabe. Pandas, eine leistungsstarke Python-Bibliothek zur Datenbearbeitung, bietet verschiedene Methoden zum Zusammenführen von Datenrahmen, einschließlich einer Bereichsbedingung. Dieser Artikel befasst sich mit diesem speziellen Szenario und stellt eine effiziente Lösung mithilfe von Numpy Broadcasting vor.
Problembeschreibung
Bei zwei Datenrahmen, A und B, besteht das Ziel darin, eine durchzuführen Innerer Join, bei dem Werte in Datenrahmen A in einen bestimmten Bereich fallen, der in Datenrahmen B definiert ist. Traditionell würde dies mithilfe der SQL-Syntax erreicht werden:
<code class="sql">SELECT * FROM A, B WHERE A_value BETWEEN B_low AND B_high</code>
Vorhandene Lösungen
Pandas bietet eine Problemumgehung mithilfe von Dummy-Spalten, dem Zusammenführen in der Dummy-Spalte und dem anschließenden Herausfiltern nicht benötigter Zeilen. Allerdings ist diese Methode rechenintensiv. Alternativ könnte man eine Suchfunktion für jeden A-Wert auf B anwenden, aber dieser Ansatz hat auch Nachteile.
Numpy Broadcasting: Ein pragmatischer Ansatz
Numpy Broadcasting bietet eine elegante und effiziente Lösung. Diese Technik nutzt die Vektorisierung, um Berechnungen für ganze Arrays statt für einzelne Elemente durchzuführen. So erreichen Sie die gewünschte Zusammenführung:
Verwenden Sie Numpy Broadcasting, um eine boolesche Maske zu erstellen:
Dieser Ansatz nutzt Broadcasting, um den Bereichsvergleich für den gesamten A-Datenrahmen durchzuführen, wodurch die Berechnungszeit und -komplexität erheblich reduziert wird.
Beispiel
Betrachten Sie die folgenden Datenrahmen:
<code class="python">A = pd.DataFrame(dict( A_id=range(10), A_value=range(5, 105, 10) )) B = pd.DataFrame(dict( B_id=range(5), B_low=[0, 30, 30, 46, 84], B_high=[10, 40, 50, 54, 84] ))</code>
Ausgabe:
A_id A_value B_high B_id B_low 0 0 5 10 0 0 1 3 35 40 1 30 2 3 35 50 2 30 3 4 45 50 2 30
Diese Ausgabe zeigt den Erfolg Zusammenführen der Datenrahmen A und B basierend auf der angegebenen Bereichsbedingung.
Zusätzliche Überlegungen
Um eine Linksverknüpfung durchzuführen, schließen Sie die nicht übereinstimmenden Zeilen aus Datenrahmen A in die Ausgabe ein. Dies kann erreicht werden, indem numpys ~np.in1d verwendet wird, um die nicht übereinstimmenden Zeilen zu identifizieren und sie an das Ergebnis anzuhängen.
Zusammenfassend lässt sich sagen, dass Numpy Broadcasting einen robusten und effizienten Ansatz zum Zusammenführen von Datenrahmen basierend auf Bereichsbedingungen bietet. Seine Vektorisierungsfunktionen verbessern die Leistung und machen es zu einer idealen Lösung für große Datensätze.
Das obige ist der detaillierte Inhalt vonWie füge ich DataFrames nach Bereichsbedingung in Pandas mithilfe von Numpy Broadcasting zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!