You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何比较两个DataFrame,返回满足±10范围的ID与区间记录

解决方法

假设你的两个DataFrame包含ID、range和数值列(以下示例用value指代数值列),可以通过以下步骤实现需求:

1. 关联两个DataFrame

通过ID将两个DataFrame做内连接,确保只保留两边共同存在的ID记录:

import pandas as pd

merged_df = pd.merge(df1, df2, on='ID', suffixes=('_df1', '_df2'))

2. 计算差值并筛选符合条件的记录

计算两数值列的差值,筛选出差值在[-10, 10]范围内的行:

merged_df['diff'] = merged_df['value_df1'] - merged_df['value_df2']
filtered_df = merged_df[(merged_df['diff'] >= -10) & (merged_df['diff'] <= 10)]

3. 提取目标结果

从筛选后的结果中提取两个DataFrame对应的ID和range列:

result = filtered_df[['ID', 'range_df1', 'range_df2']]
# 可选:重命名列让结果更直观
result = result.rename(columns={'range_df1': 'df1_range', 'range_df2': 'df2_range'})

完整示例

# 模拟示例数据
df1 = pd.DataFrame({
    'ID': [1, 2, 3, 4],
    'range': ['A1', 'B2', 'C3', 'D4'],
    'value': [50, 75, 30, 90]
})

df2 = pd.DataFrame({
    'ID': [1, 2, 3, 4],
    'range': ['X1', 'Y2', 'Z3', 'W4'],
    'value': [55, 82, 25, 105]
})

# 执行处理流程
merged_df = pd.merge(df1, df2, on='ID', suffixes=('_df1', '_df2'))
merged_df['diff'] = merged_df['value_df1'] - merged_df['value_df2']
filtered_df = merged_df[(merged_df['diff'] >= -10) & (merged_df['diff'] <= 10)]
result = filtered_df[['ID', 'range_df1', 'range_df2']]

print(result)

示例输出

ID range_df1 range_df2
0   1        A1        X1
1   2        B2        Y2
2   3        C3        Z3

(注:ID=4的记录差值为-15,超出范围被排除)

内容的提问来源于stack exchange,提问作者user20250014

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:50:26