使用pd.to_datetime转换混合格式日期出现日月颠倒问题如何解决
问题原因
pandas默认解析仅含日期的斜杠分隔字符串时,优先采用月/日/年的规则,而带时分秒后缀的日期字符串会默认优先按日在前的规则解析,就导致了两类数据转换逻辑不一致的问题。
解决方法
方法1:指定dayfirst参数(最简便,兼容两种格式)
直接在转换时添加dayfirst=True参数,强制把斜杠分隔的第一个数值识别为日、第二个识别为月,两种格式都可以正常解析:
df['COLUMN'] = pd.to_datetime(df['COLUMN'], dayfirst=True)
方法2:显式指定格式(更严谨,避免极端场景识别错误)
如果你的pandas版本≥2.0,可以用format='mixed'配合dayfirst参数,会自动匹配两种格式:
df['COLUMN'] = pd.to_datetime(df['COLUMN'], format='mixed', dayfirst=True, errors='coerce')
参数errors='coerce'会把无法转换的异常值置为空,方便后续单独排查处理。
校验转换结果
转换完成后可以用下面的代码快速验证是否存在日月颠倒的错误(正常月份不可能大于12,有输出的话就是存在识别错误的行):
print(df[df['COLUMN'].dt.month > 12])
内容的提问来源于stack exchange,提问作者banana_99
相关产品推荐
相关产品推荐

