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

pandas使用pd.to_datetime转换日期格式触发ValueError报错问题

报错原因

核心问题是传入pd.to_datetime的格式字符串和原始日期的结构不匹配:

  • 待解析的原始日期为15 January 2012样式,日、英文月份全称、年三个部分之间用空格分隔
  • 你编写的格式参数为"%d/%B/%Y",其中的/表示要求原始字符串用斜杠分隔日期各部分,和实际的空格分隔规则完全不符,因此触发值匹配错误,对应报错里的明确提示:ValueError: time data '19 February 2015' does not match format '%d/%B/%Y'。

这里是非常容易踩的误区:pd.to_datetime的format参数是用来描述输入的原始字符串的结构,不是你最终想要输出的日期格式,输出格式需要在成功解析为datetime类型后再单独调整。
额外提醒:你贴出的示例代码操作的列名是Last Date,但报错栈里实际运行的代码操作的是Last Refreshed on列,运行前要确认列名和待处理字段一致,避免触发列不存在的额外错误。

修复方案

按两步实现需求即可:

  1. 修正解析格式,用空格作为分隔符,把原始字符串正确解析为pandas的datetime64类型
  2. 如果最终需要输出15/01/2012这类斜杠分隔的日/月/年字符串格式,解析完成后通过dt.strftime做格式转换即可;如果后续要做日期计算、时间筛选、按时间聚合等操作,保留datetime类型即可,不需要转成字符串。

参考代码:

import pandas as pd

# 第一步:按原始字符串的空格分隔规则解析为日期类型,注意替换成你实际的列名
data['Last Date'] = pd.to_datetime(data['Last Date'], format="%d %B %Y")

# 【可选步骤】如果需要转成dd/mm/yyyy样式的字符串,取消注释下面这行运行
# data['Last Date'] = data['Last Date'].dt.strftime("%d/%m/%Y")

print(data.info())

补充说明:如果运行时出现英文月份无法识别的问题,一般是系统默认语言环境非英文导致,临时设置英文locale即可解决,绝大多数默认环境下不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:36:39