首頁  >  文章  >  後端開發  >  如何使用 Numpy 廣播在 Pandas 中有效執行基於範圍的連線?

如何使用 Numpy 廣播在 Pandas 中有效執行基於範圍的連線?

Susan Sarandon
Susan Sarandon原創
2024-10-30 19:53:31703瀏覽

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

Pandas 中基於範圍的聯接的最有效方法

使用pandas 資料幀時,需要執行基於範圍的聯接(合併)是一項常見任務。為了解決這個問題,人們提出了各種方法,每種方法都有自己的優點和缺點。然而,最優雅、最有效的方法是利用 numpy 廣播。

考慮資料幀 A 和 B,我們的目標是根據 A_value 落在 B_low 和 B_high 指定的範圍內的條件對它們進行內連接。

為了實現這一目標,我們利用 numpy 的強大功能來檢查 A_value 中的每個元素是否符合範圍標準。這是透過根據 B 範圍的下限和上限(B_low 和 B_high)廣播 A_value 的值來完成的。

結果是兩個數組,i 和 j,其中 i 保存匹配 A_value 的索引A 中的元素,j 保存 B 中的相應索引。透過組合這些索引,我們可以從兩個資料幀中檢索所需的行並將它們連接起來以創建合併的資料幀。

這是此方法的更新程式碼:

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

此方法不僅提供了有效的解決方案,而且還可以優雅地處理內連接和左連接。透過調整參數,我們可以輕鬆地使其適應不同的加入場景。

以上是如何使用 Numpy 廣播在 Pandas 中有效執行基於範圍的連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn