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

Pandas基于两个日期列执行merge操作失败的问题咨询

错误产生原因
  • 变量名不匹配:你完成datetime类型转换的是df1、df2两个对象,但执行merge操作时使用的是df、hpi两个变量,其中至少一个变量的Date列仍为object类型,未完成类型转换,和你之前校验的对象不是同一个。
  • 类型转换未生效:如果你确认merge用的变量就是转换后的对象,可能是执行pd.to_datetime()时没有将转换结果重新赋值给Date列,或者操作触发了pandas链式索引限制,修改未实际生效,运行merge时其中一列的类型仍为object。
  • 时区不兼容:部分旧版本pandas中,带时区的datetime类型(dtype为datetime64[ns, 时区名])会被识别为object类型,若两列Date一列带时区、一列不带时区,也会触发该报错。
解决方法
  1. 先校验实际参与merge的两个对象的Date列类型,确认不匹配的列:
print("df的Date列类型:", df['Date'].dtype)
print("hpi的Date列类型:", hpi['Date'].dtype)
  1. 对类型为object的Date列重新执行转换,确保赋值生效:
# 按需对df或hpi的Date列做转换
df['Date'] = pd.to_datetime(df['Date'])
hpi['Date'] = pd.to_datetime(hpi['Date'])
  1. 若为时区不兼容问题,统一两列的时区设置即可,比如统一转为无时区的datetime:
# 对带时区的列执行去除时区操作,这里假设hpi的Date列带时区
hpi['Date'] = hpi['Date'].dt.tz_localize(None)
  1. 重新执行merge操作即可正常运行:
merged_df = pd.merge(df, hpi, how="left", on="Date")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:00