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

如何基于关联DataFrame实现Pandas两个DataFrame按时间字段合并

Pandas 三表关联合并解决方案

需求梳理

当前需要合并三类DataFrame数据:

  • 停车场站点数据表(df1):存储不同停车场各时段的空余车位数、总容量数据
  • 传感器采集数据表(df2):存储不同传感器各时段的温度、降水量监测数据
  • 关联映射表(cor_df):记录停车场站点与部署传感器的一一对应关系
    合并规则:先通过关联映射表绑定站点与传感器的对应关系,再匹配两个业务表的1小时间隔时间字段,最终输出对齐后的全量数据。

实现代码

# 1. 先将停车场数据表与关联映射表按站点ID(Site)合并,为每个停车场记录绑定对应的传感器ID
df1_bound = pd.merge(df1, cor_df, on='Site', how='inner')
# 2. 再将绑定完传感器的停车场数据与传感器表按【传感器ID+时间】双字段合并,确保时间维度完全对齐
result_df = pd.merge(df1_bound, df2, on=['Sensor', 'Time'], how='inner')

如果需要保留两个来源的Time字段(和你给出的预期输出格式完全一致),可以提前对其中一个表的Time字段重命名后再合并:

# 重命名传感器表的时间字段避免合并后自动去重
df2 = df2.rename(columns={'Time': 'Time_sensor'})
# 第一步合并关联映射表
df1_bound = pd.merge(df1, cor_df, on='Site', how='inner')
# 第二步仅按Sensor字段合并后过滤时间一致的记录
result_df = pd.merge(df1_bound, df2, on='Sensor', how='inner')
result_df = result_df[result_df['Time'] == result_df['Time_sensor']].reset_index(drop=True)

参数说明

  • 合并方式how='inner'表示仅保留同时在两个表中存在匹配关系的记录,如果你需要保留全部停车场/全部传感器的记录,可以调整为how='left'/how='right',无匹配的字段会自动填充空值
  • 双字段关联on=['Sensor', 'Time']是合并的核心逻辑,能直接保证传感器数据的时间点与停车场数据的时间点完全对齐,无需额外过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:24:03