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

Pandas使用pd.to_datetime转换日期时出现日月位置颠倒问题求解

问题原因

直接调用pd.to_datetime()时,Pandas默认优先按月-日-年的逻辑解析日期字符串:

  • 当日部分数值≤12时,会被误识别为月份,出现月日颠倒的问题
  • 当日部分数值>12时,因为不可能作为合法月份,Pandas才会自动切换为日-月-年的逻辑解析,结果正确

正确解决方法

方法1:显式指定日期格式(最推荐)

直接指定和你数据匹配的日期格式字符串,完全避免解析歧义,同时解析性能更高:

# %d=两位日,%m=两位月,%y=两位年份
df_non_holidays["date"] = pd.to_datetime(df_non_holidays["date"], format="%d-%m-%y")

方法2:开启dayfirst参数

如果不想手动写格式匹配规则,可以直接传入dayfirst=True告知Pandas日期的第一位为日:

df_non_holidays["date"] = pd.to_datetime(df_non_holidays["date"], dayfirst=True)

拓展:读取CSV时直接完成转换

你也可以在调用pd.read_csv()时就配置日期解析参数,一步完成读取和类型转换:

df_non_holidays = pd.read_csv(
    "holidays.csv",
    parse_dates=["date"], # 指定要解析为日期的列
    dayfirst=True # 告知解析时第一位为日
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:36:02