首頁 >後端開發 >Python教學 >如何在 Pandas 中根據範圍條件高效地連接 DataFrame?

如何在 Pandas 中根據範圍條件高效地連接 DataFrame?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 12:18:02872瀏覽

How to Efficiently Join DataFrames Based on Range Conditions in Pandas?

Pandas 中以範圍連接/合併的最佳方式

在資料分析中,通常需要基於以下條件來連接或合併資料框特定範圍條件。一種方法是使用帶有虛擬列的交叉連接,但這可能效率低且複雜。更優雅、更有效率的解決方案是利用 numpy 廣播。

numpy 廣播

Numpy 廣播允許我們在不同形狀的陣列之間執行逐元素操作。這可以用來確定資料框中的哪些值滿足指定的範圍條件。

設定

考慮兩個資料框:A 有列 A_id 和 A_value,B 具有列 A_id 和 A_value列 B_id、B_low 和 B_high。我們想要連結 A 和 B,使得 A_value 介於 B_low 和 B_high 之間。

實作

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

# Convert dataframes to arrays
a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

# Determine matching rows and columns
i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh))

# Join corresponding rows from A and B
joined = pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)

# Print joined dataframe
print(joined)</code>

此方法利用逐元素比較和廣播來有效識別並將 A 和 B 中滿足範圍條件的行連接起來。它既優雅又高效,避免了循環或虛擬列的需要。

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

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