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

Python:带AM/PM与+UTC的时间格式转换报错问题

解决pd.to_datetime()报"duplicate columns & possible reduce dimensionality"错误的方案

嘿,这个错误其实有点“张冠李戴”——它大概率不是pd.to_datetime()解析时间字符串的问题,而是你传入的数据结构或者DataFrame本身的列名问题!我来给你一步步拆解解决思路:

  • 先确认你传入的是单列数据,而非整个DataFrame
    这个错误最常见的场景是:你不小心把整个DataFrame传给了pd.to_datetime(),而不是单独提取时间列。比如你可能写了pd.to_datetime(df),但正确的写法应该是pd.to_datetime(df['your_time_column_name'])。Pandas在处理整个DataFrame时,如果遇到重复列名,就会抛出这个“重复列+可能需要降维”的错误。

  • 检查DataFrame是否存在重复列名
    哪怕你指定了要转换的列,如果DataFrame里有其他重复的列名,也可能触发这个异常。你可以用下面的代码快速排查重复列:

    print(df.columns[df.columns.duplicated()])
    

    如果输出有重复列,要么删除重复列(比如df = df.loc[:, ~df.columns.duplicated()]),要么给重复列重命名后再尝试转换。

  • 指定时间格式,让解析更精准
    你的时间字符串是'11/09/2011 11:33:00 PM +0000',手动指定格式可以避免Pandas自动推断时出错,同时提升效率。根据你的字符串格式,对应的format参数应该是:

    # 注意:如果是月/日/年,把%d和%m互换
    pd.to_datetime(df['time_col'], format='%d/%m/%Y %I:%M:%S %p %z')
    

    格式说明:

    • %d:两位日期,%m:两位月份,%Y:四位年份
    • %I:12小时制的小时,%M:分钟,%S:秒
    • %p:AM/PM标识,%z:时区偏移(比如+0000)
  • 处理异常值(可选)
    如果你的数据里有无法解析的异常时间字符串,可以加上errors='coerce'参数,把这些异常值转为NaT(时间类型的空值),避免转换中途中断:

    pd.to_datetime(df['time_col'], format='%d/%m/%Y %I:%M:%S %p %z', errors='coerce')
    

先按上面的步骤排查,应该就能解决这个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:48:38