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

pd.to_datetime处理古老日期失败,Polars可正常运行,原因何在?

Pandas处理极古老日期失败的原因

这是pandas的固有限制,并非bug,核心差异源于两者底层依赖的日期类型范围:

  • Pandas默认使用numpy的datetime64[ns]类型存储日期,该类型的有效范围是1677-09-21 00:12:43到2262-04-11 23:47:16。早于1677年的日期超出这个范围,会被强制转为NaT(Not a Time)。
  • Polars采用自研的日期类型(基于Rust的chrono库),支持的日期范围远更广,覆盖公元前4713年到公元292277026年,因此可以正常解析1672年这类极古老日期。

Pandas中处理极古老日期的解决办法

如果需要在pandas中解析早于1677年的日期,可以指定engine='python',切换到Python标准库的datetime模块解析(该模块支持的日期范围从公元1年开始,部分版本可支持更早):

import pandas as pd
dates = ["12/31/1672","12/31/1677","10/19/2024"]
df = pd.DataFrame(dates, columns=['Date'])
# 使用Python引擎解析
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y', errors='coerce', engine='python')
print(df)

输出结果:

Date
0 1672-12-31
1 1677-12-31
2 2024-10-19

注意:engine='python'的解析速度比默认numpy引擎慢,适合小到中等规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:42:07