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

使用pd.to_datetime()转换早于1700年日期时遇OutOfBoundsDatetime错误求助

解决pd.to_datetime转换早于1700年日期的OutOfBoundsDatetime错误

问题原因

pandas默认的datetime64[ns]类型依赖纳秒级时间戳,其可表示的日期范围为1677-09-21至2262-04-11。1516年这类早于1677年的日期超出了该范围,因此触发OutOfBoundsDatetime错误。

解决方案

以下是几种可行的处理方式:

  • 使用Python原生datetime对象存储
    借助dateutil库的解析器,将日期转为Python原生datetime对象(存储为pandas的object类型),支持更宽泛的日期范围:

    from dateutil import parser
    import pandas as pd
    
    df = pd.read_excel('Timeline_SecondMillenialH2.xlsx')
    df['Date'] = df['Date'].apply(lambda x: parser.parse(str(x)) if pd.notna(x) else x)
    
  • 改用pandas Period类型
    Period类型专为处理广泛时间范围设计,适合历史日期场景:

    import pandas as pd
    
    df = pd.read_excel('Timeline_SecondMillenialH2.xlsx')
    df['Date'] = pd.to_period(df['Date'], format='%Y-%m-%d')
    

    若后续需要转回datetime格式(仅对1677-2262范围内日期有效),可使用df['Date'].dt.to_timestamp()。

  • 临时规避:保留原始字符串(不推荐)
    若仅需暂时绕过错误,可指定errors='ignore'保留原始字符串格式,但会丢失日期类型的运算优势:

    df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d', errors='ignore')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:52:12