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) & (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中文网其他相关文章!