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中文網其他相關文章!