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

Pandas merge按Date字段合并不生效、左表df1无变化是什么原因?

Pandas merge操作合并不生效的常见原因
  • 未对merge返回结果赋值
    Pandas的merge方法不属于inplace操作,执行df1.merge(df2, on='Date')时只会返回合并后的新DataFrame,不会修改原有df1的内容。需要显式赋值才能更新原变量:
    df1 = df1.merge(df2, on='Date')
    
  • Date列存在隐式值差异
    即便两个表的Date列都为datetime格式,也可能存在肉眼不可见的差异导致匹配失败:
    • 时区不一致:例如一个是带时区的datetime64[ns, UTC]类型,另一个是无时区的datetime64[ns]类型
    • 时间精度差异:例如一个列精确到秒,另一个列带有毫秒/微秒尾数,打印时被隐藏不会显示
      可通过pd.testing.assert_series_equal(df1['Date'], df2['Date'])校验两个日期列是否完全相等。
  • 合并后列名添加了默认后缀
    如果两个表除了Date列之外还有其他重名列,合并时Pandas会自动给重名列添加_x(左表)、_y(右表)后缀,原右表的列名不会直接出现,容易误以为没有新增列。可通过suffixes参数自定义后缀避免混淆:
    df1.merge(df2, on='Date', suffixes=('_left', '_right'))
    
  • 合并模式导致无匹配内容被丢弃
    merge默认使用how='inner'内连接模式,如果两个表的Date列没有完全匹配的取值,合并结果会为空;如果使用how='left'左连接,右表无匹配项时合并结果就和原左表完全一致,不会新增右表的列内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:24:04