如何使用 Numpy 广播在 Pandas 中高效执行基于范围的连接?

Susan Sarandon
发布: 2024-10-30 19:53:31
原创
712 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!