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

Pandas中datetime字符串格式解析报错,请求解决方案

解决Pandas datetime格式解析报错问题

我的数据框中datetime字符串格式为5/23/2022 19:22:33,示例数据如下:

col
1  5/23/2022 19:23:12   
2  5/23/2022 19:24:13   
3  5/23/2022 19:24:49   
4  5/23/2022 19:25:48

执行以下代码时出现解析报错:

raise ParserError("Unknown string format: %s", timestr)
dateutil.parser._parser.ParserError: Unknown string format **

执行的代码:

Z16.iloc[:, 2] = pd.to_datetime(Z16.columns[2])
Z16.iloc[:, 12] = pd.to_datetime(Z16.columns[12], infer_datetime_format= True)
Tat_Time = Z16.iloc[:, 12]-Z16.iloc[:, 2]
Z16['Tat_Time'] = Tat_Time

问题原因

代码核心错误是误将列名(Z16.columns[2]/Z16.columns[12])作为时间解析对象,而非列内的实际数据。iloc[:,2]指向第3列的所有行数据,但你赋值时用了列名,列名通常不是符合格式的时间字符串,因此触发解析错误。

解决方案

修改代码,针对列内数据进行解析,并明确指定时间格式以避免识别偏差:

# 解析第3列的时间数据,明确格式匹配你的时间字符串
Z16.iloc[:, 2] = pd.to_datetime(Z16.iloc[:, 2], format='%m/%d/%Y %H:%M:%S')
# 解析第13列的时间数据
Z16.iloc[:, 12] = pd.to_datetime(Z16.iloc[:, 12], format='%m/%d/%Y %H:%M:%S')
# 计算时间差并新增列
Tat_Time = Z16.iloc[:, 12] - Z16.iloc[:, 2]
Z16['Tat_Time'] = Tat_Time

特殊情况处理

如果你的时间字符串包含两个空格(如5/23/2022 19:22:33),可以先统一空格数量再解析:

# 去除字符串中的多余空格,统一为单个空格
Z16.iloc[:, 2] = Z16.iloc[:, 2].str.replace('  ', ' ')
Z16.iloc[:, 12] = Z16.iloc[:, 12].str.replace('  ', ' ')
# 再执行时间解析
Z16.iloc[:, 2] = pd.to_datetime(Z16.iloc[:, 2], format='%m/%d/%Y %H:%M:%S')
Z16.iloc[:, 12] = pd.to_datetime(Z16.iloc[:, 12], format='%m/%d/%Y %H:%M:%S')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:47