首頁 > 後端開發 > Python教學 > 如何根據範圍條件高效合併 Pandas DataFrame?

如何根據範圍條件高效合併 Pandas DataFrame?

Susan Sarandon
發布: 2024-10-29 11:06:30
原創
434 人瀏覽過

How to Efficiently Merge Pandas DataFrames Based on a Range Condition?

Pandas 中以範圍連接

在使用Pandas 進行資料操作時,一個常見任務是根據範圍條件合併兩個資料幀。這涉及到識別資料幀 A 中的行,其中特定列中的值位於資料幀 B 中的指定範圍內。

此任務的一種方法是在兩個資料幀中建立虛擬列,使用以下命令執行交叉連接這個虛擬列,然後過濾掉不符合範圍條件的行。然而,這種方法對於大型資料集可能效率低。

另一個解決方案是利用 numpy 廣播,這是對陣列執行逐元素操作的強大技術。透過將資料幀 A 和 B 中的相關列轉換為 numpy 數組,我們可以應用邏輯運算子將 A_value 與 B_low 和 B_high 值進行比較,以識別滿足範圍條件的行。

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] <= bh))

# Merge and align dataframes
result = pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)

print(result)
登入後複製

此方法提供與虛擬列方法相比,大型資料集的效率更高。此外,它還可以透過調整 numpy 廣播步驟中的邏輯來輕鬆實現左連接或右連接。

以上是如何根據範圍條件高效合併 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板