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

如何使用Pandas按Meter_indication最近值合并两个DataFrame

按里程表最近值匹配合并两个DataFrame的实现方案

假设待合并的两个DataFrame分别为df1(含Meter_indication、Fuel1字段)、df2(含Meter_indication、Fuel2字段),可按以下步骤实现精准匹配,避免重复行、跨值错误匹配问题:

  • 首先对两个表的Meter_indication列做清洗,删除空值、统一转为float数值类型,排除非数字异常值
  • 若单个表内存在重复的Meter_indication记录,先按业务规则聚合(如取Fuel字段均值、最新值),避免后续匹配生成重复行
  • 两个表均按Meter_indication列升序排序

方案1:merge_asof优化方案(性能最优,适合里程严格递增的场景)

import pandas as pd

# 预处理
df1 = df1.dropna(subset=['Meter_indication']).sort_values('Meter_indication').reset_index(drop=True)
df2 = df2.dropna(subset=['Meter_indication']).sort_values('Meter_indication').reset_index(drop=True)

# 单表重复值聚合,可根据实际业务调整聚合逻辑
df1 = df1.groupby('Meter_indication', as_index=False)['Fuel1'].mean()
df2 = df2.groupby('Meter_indication', as_index=False)['Fuel2'].mean()

# 最近值合并
merged = pd.merge_asof(
    left=df1,
    right=df2,
    on='Meter_indication',
    direction='nearest', # 核心参数:开启最近值匹配,而非默认的向后/向前匹配
    tolerance=5 # 可自定义允许的最大里程偏差,单位km,超过该偏差的记录不会匹配,避免跨值错误匹配
)

# 过滤未匹配成功的记录,若需保留未匹配行可删除该行
merged = merged.dropna(subset=['Fuel2'])

# 输出指定字段
result = merged[['Meter_indication', 'Fuel1', 'Fuel2']]

方案2:KD树最近邻匹配方案(兼容性更强,适合里程非严格递增的场景)

import pandas as pd
from sklearn.neighbors import KDTree
import numpy as np

# 预处理逻辑和上文一致
df1 = df1.dropna(subset=['Meter_indication']).reset_index(drop=True)
df2 = df2.dropna(subset=['Meter_indication']).reset_index(drop=True)
df1 = df1.groupby('Meter_indication', as_index=False)['Fuel1'].mean()
df2 = df2.groupby('Meter_indication', as_index=False)['Fuel2'].mean()

# 构建KD树匹配最近里程
tree = KDTree(df2[['Meter_indication']])
max_tolerance = 5 # 自定义最大允许偏差,单位km
distances, indices = tree.query(df1[['Meter_indication']], k=1)

# 过滤偏差超限的匹配结果
valid_idx = distances.flatten() <= max_tolerance
df1.loc[valid_idx, 'Fuel2'] = df2.iloc[indices.flatten()[valid_idx]]['Fuel2'].values

# 生成最终结果
result = df1.dropna(subset=['Fuel2'])[['Meter_indication', 'Fuel1', 'Fuel2']].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:15:05