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

使用pd.to_datetime转换时间列触发OutOfBoundsDatetime错误的排查求助

问题解析与解决办法

错误原因

你遇到的OutOfBoundsDatetime错误,本质是pd.to_datetime默认会把单独的时间字符串(比如0:10:52)补全成日期+时间格式,默认日期是公元1年1月1日(1-01-01),但pandas的纳秒时间戳最早只支持到1677年9月21日,这个远古日期直接超出了范围,所以触发报错。

另外,错误信息里的1-01-01 00:00:34说明你的数据里大概率存在不符合HH:MM:SS格式的异常值,比如某个单元格只有00:34(分:秒)或者34(秒),pd.to_datetime会把这类字符串解析成当天的0时0分34秒,补全默认日期后就触发了越界错误。

排查与解决步骤

1. 定位异常数据

先找出所有不符合HH:MM:SS格式的行,用以下代码:

# 分割时间字符串,检查是否包含时/分/秒三个部分
invalid_rows = log_file[log_file['start time'].str.split(':').str.len() != 3]
print(invalid_rows)

运行后就能看到哪些行的时间格式有问题,比如只有分秒、只有秒,或者格式错乱的内容。

2. 正确的时间转换方法

你的数据是时长/时间点,不是带日期的时间戳,更适合用以下两种方式处理:

方法一:用pd.to_timedelta转换(推荐)

直接把时间字符串转成时长类型,后续可灵活提取时间部分:

import datetime

# 转成timedelta类型
log_file['start time'] = pd.to_timedelta(log_file['start time'])
# 转换为datetime.time类型
log_file['start time'] = log_file['start time'].dt.components.apply(
    lambda x: datetime.time(x.hours, x.minutes, x.seconds), axis=1
)

方法二:给pd.to_datetime指定有效日期+格式

如果一定要用pd.to_datetime,可以指定一个在pandas支持范围内的基准日期,同时强制格式解析:

# 指定基准日期为1970-01-01,按HH:MM:SS格式解析,错误内容转成NaT
log_file['start time'] = pd.to_datetime(
    log_file['start time'], 
    format='%H:%M:%S', 
    errors='coerce'
).dt.time

3. 处理异常值

根据第一步找到的异常数据,要么修正CSV里的格式,要么用以下方式处理:

import datetime

# 填充默认时间(比如00:00:00)
log_file['start time'] = log_file['start time'].fillna(datetime.time(0,0,0))
# 或者直接删除异常行
log_file = log_file.dropna(subset=['start time'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:24:21