首页  >  文章  >  后端开发  >  如何在 Pandas 中根据范围条件高效地连接 DataFrame?

如何在 Pandas 中根据范围条件高效地连接 DataFrame?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 12:18:02866浏览

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