求助:将特殊时长字符串转为datetime64[ns]失败,如何解决?
解决时间字符串转datetime64[ns]的问题
嗨,我来帮你搞定这个转换问题!你当前的代码有两个核心问题:
- 你的
format参数完全不符合输入字符串的格式(输入是HH:MM:SS或HH:MM的时长格式,不是%d/%m/%Y/%H/%m/%s这种日期格式) - 输入的是超过24小时的时长字符串,
pd.to_datetime无法直接识别这类格式,加上错误的format导致转换失败,最终返回的是包含NaT的object类型数据
正确的处理步骤
因为你的输入是时长(比如87小时38分钟),我们需要先把它转换成时间间隔(timedelta),再基于一个基准日期转换成datetime64[ns]类型:
- 补全时间字符串格式,确保所有条目都是
HH:MM:SS:
import pandas as pd time = ['87:38:00','51:48:00','26:05:00','10:04','69:21:00','66:56:00','47:12:00'] # 给只有HH:MM的条目补全秒数部分 time_fixed = [t if len(t.split(':')) == 3 else f"{t}:00" for t in time]
- 将补全后的字符串转换成timedelta类型:
time_delta = pd.to_timedelta(time_fixed)
- 基于一个基准日期(比如1970-01-01),把时间间隔转换成datetime64[ns]类型:
base_date = pd.Timestamp('1970-01-01') datetime_result = base_date + time_delta
现在你可以检查datetime_result.dtype,会发现它已经是datetime64[ns]类型了~
内容的提问来源于stack exchange,提问作者Zephyr
相关产品推荐
相关产品推荐

