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

使用pandas.to_datetime转换日期列时遇ValueError问题求助

解决pandas.to_datetime的ValueError格式匹配问题

以下是常见的排查方向和解决方法:

  • 定位数据中的异常值
    报错里的'X'只是示例,实际数据中大概率存在不符合格式的内容,比如:

    • 混合了不同格式的日期(部分用四位年份%Y,但你指定了两位年份%y)
    • 包含非日期字符串(空格、字母、特殊符号)或缺失值
    • 时间部分非法(比如12小时制带AM/PM但格式未声明,或分钟数超过59)
      可以用这段代码快速找出异常行:
    # 生成转换失败则为NaN的临时列
    df['datetime_temp'] = pd.to_datetime(df['目标列'], errors='coerce')
    # 筛选出转换失败的原数据行
    invalid_rows = df[df['datetime_temp'].isna()]
    print(invalid_rows['目标列'])
    
  • 核对格式字符串的准确性
    确保格式符和数据完全匹配:

    • 分隔符:数据里是/还是-?空格、冒号的位置是否和格式一致?比如数据是01-02-23 13:45,用%m/%d/%y %H:%M必然报错
    • 格式符对应:%m是两位月份(如01),如果数据是单数字月份(如1),Linux下用%-m、Windows下用%#m忽略前导零;%H是24小时制,若数据是12小时制需改用%I并加上%p匹配AM/PM
  • 尝试自动推断格式
    暂时去掉手动指定的format参数,添加infer_datetime_format=True让pandas自动识别格式:

    df['目标列'] = pd.to_datetime(df['目标列'], infer_datetime_format=True)
    

    如果转换成功,可以通过查看转换后日期的格式反推正确的格式字符串,再替换回去提升批量转换效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:18