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

Pandas Series日期转换出现日与月颠倒错误,求解决方案

解决Pandas Series日期解析中日月颠倒的问题

问题重现

输入的日期序列为DD/MM/YYYY格式:

import pandas as pd
x = pd.Series(["12/01/2017", "09/03/2018", "23/11/2019"])

期望解析为YYYY-MM-DD格式的datetime类型,但执行原代码后出现日月颠倒错误,仅日数超过12的条目解析正确。

错误原因

原代码未明确指定输入日期的格式,pd.to_datetime自动推断时会优先采用美式MM/DD/YYYY格式解析:

  • 对于12/01/2017,12被识别为合法月份,01被当作日期,导致解析结果颠倒
  • 对于23/11/2019,因23不属于合法月份范围(1-12),才会自动切换为DD/MM/YYYY格式解析

yearfirst=False仅控制年份是否在开头,无法明确日和月的顺序,因此无法解决该问题。

解决方法

直接在pd.to_datetime中指定输入日期格式为%d/%m/%Y,强制按DD/MM/YYYY规则解析,无需额外的strftime和类型转换:

pd.to_datetime(x, format='%d/%m/%Y')

运行结果:

0   2017-01-12
1   2018-03-09
2   2019-11-23
dtype: datetime64[ns]

若需兼容格式错误的条目,可保留errors='coerce'参数,将无法解析的日期转为NaT:

pd.to_datetime(x, format='%d/%m/%Y', errors='coerce')

补充说明

  • 当日期格式明确时,务必指定format参数,既可以避免解析错误,还能提升代码运行效率(自动推断格式的速度远慢于指定格式)
  • 若存在多种混合格式的日期,可尝试dayfirst=True参数(优先级低于format),但仍建议明确指定格式以保证解析准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:15:33