Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man mithilfe von Numpy Broadcasting bereichsbasierte Verknüpfungen in Pandas effizient durchführen?

Wie kann man mithilfe von Numpy Broadcasting bereichsbasierte Verknüpfungen in Pandas effizient durchführen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 19:53:31708Durchsuche

How to Efficiently Perform Range-Based Joins in Pandas Using Numpy Broadcasting?

Effektivste Methode für bereichsbasierte Verknüpfungen in Pandas

Bei der Arbeit mit Pandas-Datenrahmen besteht die Notwendigkeit, bereichsbasierte Verknüpfungen (Zusammenführungen) durchzuführen ) ist eine häufige Aufgabe. Um dieses Problem anzugehen, wurden verschiedene Ansätze vorgeschlagen, von denen jeder seine eigenen Vor- und Nachteile hat. Die eleganteste und effizienteste Methode ist jedoch die Verwendung von Numpy Broadcasting.

Betrachten Sie die Datenrahmen A und B, bei denen unser Ziel darin besteht, sie unter der Bedingung, dass A_value in den durch B_low und B_high angegebenen Bereich fällt, inner zu verbinden.

Um dies zu erreichen, nutzen wir die Leistungsfähigkeit von Numpy, um zu prüfen, ob jedes Element in A_value die Bereichskriterien erfüllt. Dies wird erreicht, indem die Werte von A_value mit den unteren und oberen Grenzen (B_low und B_high) der Bereiche in B verglichen werden.

Das Ergebnis sind zwei Arrays, i und j, in denen i die Indizes der übereinstimmenden A_value enthält Elemente in A und j enthält die entsprechenden Indizes in B. Durch die Kombination dieser Indizes können wir die gewünschten Zeilen aus beiden Datenrahmen abrufen und sie verketten, um den zusammengeführten Datenrahmen zu erstellen.

Hier ist der aktualisierte Code für diesen Ansatz :

<code class="python">import numpy as np

a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

i, j = np.where((a[:, None] >= bl) &amp; (a[:, None] <= bh))

pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)</code>

Diese Methode bietet nicht nur eine effiziente Lösung, sondern verarbeitet auch innere und linke Verknüpfungen ordnungsgemäß. Durch Anpassen der Parameter können wir es problemlos an verschiedene Beitrittsszenarien anpassen.

Das obige ist der detaillierte Inhalt vonWie kann man mithilfe von Numpy Broadcasting bereichsbasierte Verknüpfungen in Pandas effizient durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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