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

Python中pandas.to_datetime转换dd-mm-yy格式日期异常怎么解决?

解决pandas日期格式转换问题

完整实现代码

import pandas as pd

d = pd.DataFrame({"dat":["01-06-68", "01-06-57","14-02-80","01-01-04","07-11-20"],
                "j":[34,2,1,7,8]})

# 方法1:兼容所有pandas版本
# 先指定输入格式为dd-mm-yy,解决日月顺序识别错误问题
d['dat'] = pd.to_datetime(d['dat'], format='%d-%m-%y')
# 自定义年份阈值调整,这里设置年份>=2050的都归到上世纪,可根据实际需求修改阈值
d.loc[d['dat'].dt.year >= 2050, 'dat'] = d['dat'] - pd.DateOffset(years=100)

# 方法2:pandas版本>=2.2可直接用内置参数一步实现
# d['dat'] = pd.to_datetime(d['dat'], format='%d-%m-%y', year_cutoff=50)

输出验证

执行上述代码后输出d['dat']即可得到期望结果:

0   1968-06-01
1   1957-06-01
2   1980-02-14
3   2004-01-01
4   2020-11-07
Name: dat, dtype: datetime64[ns]

说明

  • pd.to_datetime的format参数明确指定输入日期的结构为%d-%m-%y(日-月-两位数年份),避免自动推断出现日月顺序颠倒的问题
  • year_cutoff参数的逻辑为:两位数年份小于参数值的归为21世纪,大于等于参数值的归为20世纪,可根据业务场景自行调整阈值大小
  • 低版本pandas没有内置year_cutoff参数,用手动偏移100年的方式即可实现相同效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:02