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

升级Pandas至2.2.0后,含时间戳的DataFrame合并失败求助

解决Pandas 2.2.0合并DataFrame时报错的问题

从报错栈来看,问题出在时间戳列的数据类型不一致导致concat操作失败——Pandas 2.2.0对时间类型的一致性校验比2.0.3版本更严格。

排查与解决步骤:

  • 先检查两个DataFrame中时间戳列的具体数据类型:

    print(df1['时间戳列名'].dtype)
    print(df2['时间戳列名'].dtype)
    

    重点关注是否存在时区差异(比如一个是datetime64[ns],另一个是datetime64[ns, UTC]),或是类型本质差异(比如一个是普通datetime,另一个是带频率的Period类型)。

  • 统一时间戳列的类型:

    • 若存在时区不一致,将其中一个转换为与另一个匹配的时区:
      # 把df2的时间戳转为无时区(与df1一致)
      df2['时间戳列名'] = df2['时间戳列名'].dt.tz_localize(None)
      # 或把df1转为带时区格式(与df2一致)
      df1['时间戳列名'] = df1['时间戳列名'].dt.tz_localize('UTC')
      
    • 若存在类型差异(比如某列是object类型的时间字符串),统一转为标准datetime类型:
      df1['时间戳列名'] = pd.to_datetime(df1['时间戳列名'])
      df2['时间戳列名'] = pd.to_datetime(df2['时间戳列名'])
      
  • 若其中一个DataFrame的时间戳列为空,显式指定dtype避免自动推断差异:

    df_empty['时间戳列名'] = pd.Series([], dtype='datetime64[ns]')
    
  • 如果是按时间戳列关联合并的场景,可尝试用merge替代concat:

    merged_df = pd.merge(df1, df2, on='时间戳列名', how='outer')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:32:51