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

使用Pandas读取Excel时日期格式异常致pd.to_datetime报错

解决混杂日期格式的转换问题

针对你遇到的多格式日期转换报错问题,提供以下几种实用解决方案:

方案1:让Pandas自动推断格式(最简方案)

移除指定的format参数,让Pandas自动识别不同日期格式,同时用errors='coerce'处理无效时间(比如你提到的秒数超过59的15/10/2022 11:13:64):

dfEx['Date'] = pd.to_datetime(dfEx['Date'], errors='coerce')
  • 说明:errors='coerce'会将无法解析的日期转为NaT,后续可通过dfEx['Date'].isna()定位这些无效行做针对性处理。

方案2:分格式转换后合并(更可控)

如果自动推断精度不够,可分别处理两种已知格式,再合并结果:

# 处理dd/mm/yyyy HH:MM:SS格式
format1 = pd.to_datetime(dfEx['Date'], format='%d/%m/%Y %H:%M:%S', errors='coerce')
# 处理yyyy-mm-dd HH:MM:SS格式
format2 = pd.to_datetime(dfEx['Date'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
# 优先取第一种格式的解析结果,无效值用第二种格式填充
dfEx['Date'] = format1.fillna(format2)

方案3:读取Excel时直接处理(从源头解决)

在读取Excel阶段就处理日期列,避免后续转换麻烦:

# 方法A:让openpyxl直接解析日期列
dfEx = pd.read_excel(fileExcel, engine='openpyxl', parse_dates=['Date'])

# 方法B:自定义转换器处理混杂格式
def parse_mixed_dates(date_str):
    try:
        return pd.to_datetime(date_str, format='%d/%m/%Y %H:%M:%S')
    except ValueError:
        try:
            return pd.to_datetime(date_str, format='%Y-%m-%d %H:%M:%S')
        except ValueError:
            return pd.NaT

dfEx = pd.read_excel(fileExcel, engine='openpyxl', converters={'Date': parse_mixed_dates})

注意:Excel中15/10/2022 11:13:64属于无效时间(秒数超过59),所有方法都会将其转为NaT,需手动修正这些行的秒数后重新解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:35:24