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

解决pd.to_datetime转换MMM YY格式Series的OutOfBoundsDatetime错误

解决 OutOfBoundsDatetime 错误:转换"MMM YY"格式字符串为datetime类型

问题原因

执行pd.to_datetime(dim_data["mmm yy"])时触发OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-05-22 00:00:00错误,是因为pandas默认将"May 22"这类两位年份的字符串解析为公元1年5月22日,该时间早于pandas纳秒时间戳支持的下限(1677-09-21),导致越界。

解决方案

1. 明确指定解析格式(推荐)

通过format参数告诉pandas字符串的格式,确保两位年份被解析为20xx年:

dim_data["mmm yy"] = pd.to_datetime(dim_data["mmm yy"], format="%b %y")
  • %b:匹配英文月份缩写(如May、Jul)
  • %y:匹配两位年份,pandas默认将其映射到1969-2068区间(即"22"会被解析为2022年)

2. 控制显示格式(可选)

如果需要保持datetime类型的同时,显示为"MMM YY"格式,可设置pandas的全局显示选项:

# 先转换为datetime类型
dim_data["mmm yy"] = pd.to_datetime(dim_data["mmm yy"], format="%b %y")
# 设置显示格式(仅改变可视化效果,底层仍是datetime类型)
pd.options.display.date_format = '%b %y'

3. 排查异常数据

若转换仍失败,可先检查是否存在不符合"MMM YY"格式的异常值:

# 将无法解析的行设为NaT,筛选出异常行
invalid_rows = dim_data[pd.to_datetime(dim_data["mmm yy"], format="%b %y", errors="coerce").isna()]
print("异常数据行:")
print(invalid_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:05:24