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

处理pandas日期转换时的OutOfBoundsDatetime纳秒时间戳越界错误

日期转换报错问题排查与解决

我正在处理一个包含棒球比赛日期(Date)和观众人数(Attendance)的DataFrame,用于制作日历热力图。数据如下:

Date    Attendance
1   Apr 7   44723.0
2   Apr 8   42719.0
3   Apr 9   36139.0
4   Apr 10  41253.0
5   Apr 11  20480.0

我尝试了以下两种日期转换方法:

- df['Date'] = df['Date'].astype('datetime64[ns]')
- df['Date'] = pd.to_datetime(df['Date'])

但均报错:

'Out of bounds nanosecond timestamp: 1-04-07 00:00:00'.

查看数据后发现,我并没有对应该时间戳的日期。参考相关帖子后,怀疑问题可能是日期未补零?请问这是否是导致错误的原因?


日期未补零不是报错的直接原因,真正问题出在:你的日期数据只有月份缩写(Apr)和日期(7/8/9等),缺少年份信息。Pandas默认会把这类日期的年份推断为公元1年(即1-04-07),而numpy的datetime64[ns]类型支持的时间范围是1677年至2262年,公元1年远远超出这个范围,因此触发“Out of bounds nanosecond timestamp”错误。

解决方案

你需要明确指定年份,让Pandas生成合法的时间戳,有两种常用方式:

  1. 直接在pd.to_datetime中指定年份和日期格式:
df['Date'] = pd.to_datetime(df['Date'], format='%b %d', year=2023)  # 替换为实际比赛年份

这里%b匹配月份缩写(如Apr),%d匹配日期(带不带前导零都能识别,所以Apr 7不用补零也没问题)。

  1. 先给日期字段拼接年份,再转换:
df['Date'] = '2023 ' + df['Date']  # 拼接年份
df['Date'] = pd.to_datetime(df['Date'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:15:44