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

为何Pandas pd.to_datetime转换同格式日期会出现异常结果?

Pandas日期解析错误:为什么01-12-19被转成了2019年1月12日?

这个问题本质是日期格式歧义导致的Pandas默认推断失误,咱们来理清楚:

问题根源

你的日期字符串是日-月-年 时:分的格式,但pd.to_datetime()在没有明确指定格式时,会根据字符串内容自动推断:

  • 对于24-05-19,因为24不可能是月份(月份范围是1-12),Pandas能立刻判断这是日-月-年,所以转换正确;
  • 但01-12-19里的01和12都符合月份的取值范围,这时候Pandas会默认采用美式的月-日-年格式解析,于是就把01当成月份、12当成日期,得到了错误的2019-01-12。

解决方法:明确指定日期格式

要彻底避免这种歧义,直接给pd.to_datetime()传入format参数,告诉它你的日期字符串结构是%d-%m-%y %H:%M:

import pandas as pd

# 原始日期字符串
date1 = '01-12-19 01:04'
date2 = '24-05-19 15:02'

# 指定格式转换
fixed_date1 = pd.to_datetime(date1, format='%d-%m-%y %H:%M')
fixed_date2 = pd.to_datetime(date2, format='%d-%m-%y %H:%M')

print(fixed_date1)  # 输出:Timestamp('2019-12-01 01:04:00')
print(fixed_date2)  # 输出:Timestamp('2019-05-24 15:02:00')

格式代码说明

这里用到的格式代码对应含义:

  • %d:两位数的日期(01-31)
  • %m:两位数的月份(01-12)
  • %y:两位数的年份(19自动映射为2019)
  • %H:24小时制的小时数(00-23)
  • %M:两位数的分钟数(00-59)

这样指定格式后,Pandas就会严格按照你定义的规则解析日期,再也不会出现推断错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:47:50