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

CSV日期列M/D顺序错误:如何统一年份为2018并修正解析格式

解决Pandas日期解析中月份识别错误的问题

这个问题很常见——Pandas的pd.to_datetime在自动推断日期格式时,会优先选择“合法”的月份值,导致像9/4/2018这样的日期被误判为月/日/年(9月4日),而不是你实际需要的日/月/年(4月9日)。前面的14/3/18能正确解析,是因为14不可能作为月份,Pandas只能默认按日/月/年处理。

下面给你两种可靠的解决方法:

方法1:强制指定日在前(dayfirst=True)

直接告诉Pandas,日期字符串的第一部分是日,第二部分是月,这样不管年份是两位还是四位,都能正确解析:

import pandas as pd

# 示例数据
df = pd.DataFrame({'Date': ['14/3/18', '28/3/18', '9/4/2018']})

# 正确解析日期
df['DateTime'] = pd.to_datetime(df['Date'], dayfirst=True)

print(df['DateTime'])

输出结果:

0   2018-03-14
1   2018-03-28
2   2018-04-09
Name: DateTime, dtype: datetime64[ns]

方法2:明确指定日期格式(灵活适配两位/四位年份)

如果你的日期格式固定是日/月/年,可以用format参数结合%d(日)、%m(月)、%y(两位年份),Pandas会自动将两位年份补全为四位(默认补20xx),同时也兼容四位年份的输入:

df['DateTime'] = pd.to_datetime(df['Date'], format='%d/%m/%y')

这个方法同样能得到正确的结果,而且比自动推断更快,适合处理大量数据的场景。

为什么之前会出错?

Pandas的自动日期推断逻辑是:当遇到像9/4/2018这样的字符串时,它会检查两个可能的格式:

  • 月/日/年:9是合法月份(1-12),4是合法日期,所以优先采用这个格式
  • 日/月/年:9是合法日期,但4也是合法月份,这时候Pandas会默认优先选择月在前的格式(符合美式日期习惯),导致解析错误

通过上面两种方法,你可以强制Pandas按照你需要的日/月/年格式解析,彻底解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:48:09