首页 >后端开发 >Python教程 >如何根据范围条件高效合并 Pandas DataFrame?

如何根据范围条件高效合并 Pandas DataFrame?

Susan Sarandon
Susan Sarandon原创
2024-10-29 11:06:30426浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn