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

如何匹配两个DataFrame的相同ID并查找距离给定日期最接近的日期

实现方法

思路

  • 统一两个DataFrame的Date列格式为datetime类型,避免日期计算出错
  • 以ID为关联键合并两个表,让df1的每条数据都关联上df2中同ID的所有日期数据
  • 计算df2日期与df1对应日期的绝对差值
  • 按df1的ID和原始日期分组,取差值最小的对应df2日期即为最接近日期

代码实现

import pandas as pd

# 转换日期列为datetime格式,核心步骤不可省略
df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])

# 按ID关联两个表
merged_df = df1.merge(df2, on='ID', suffixes=('', '_df2'))

# 计算日期差绝对值
merged_df['diff'] = abs(merged_df['Date'] - merged_df['Date_df2'])

# 分组取差最小的行
res_df = merged_df.loc[merged_df.groupby(['ID', 'Date'])['diff'].idxmin()]

# 重命名列得到最终结果
res_df = res_df[['ID', 'Date', 'Date_df2']].rename(columns={'Date_df2': 'Closest Date'})

# 可选:将日期列转回字符串格式输出
# res_df[['Date', 'Closest Date']] = res_df[['Date', 'Closest Date']].dt.strftime('%Y-%m-%d')

运行上述代码代入你提供的示例数据,即可得到完全匹配的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:27:00