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

Pandas to_datetime函数输出异常:日期转换后与原数据不符

Pandas日期转换不一致问题的解决办法

我懂你遇到的困扰了——用pd.to_datetime转换Date列后,部分行的转换结果和原始日期对不上,核心问题出在Pandas默认的日期解析逻辑和你的数据实际格式不匹配。

问题根源

你的Date列是DD-MM-YYYY格式(比如01-12-2017代表2017年12月1日),但pd.to_datetime自动推断格式时,会优先把XX-XX-XXXX这类格式当成MM-DD-YYYY处理,所以会把01-12-2017错误解析成2017年1月12日,这就导致了Date和TS列的不一致。

解决方案

1. 指定明确的解析格式

直接在pd.to_datetime里加上format参数,强制按你的日期格式解析,这是最稳妥的解决方式:

x1['TS'] = pd.to_datetime(x1['Date'], format='%d-%m-%Y')

这里%d代表日,%m代表月,%Y代表4位年份,完全匹配你的Date列格式。

2. 处理异常日期(可选)

如果数据里存在不符合DD-MM-YYYY格式的异常值,可以用errors='coerce'把无法解析的日期转为NaT(Pandas的空时间值),方便后续排查处理:

x1['TS'] = pd.to_datetime(x1['Date'], format='%d-%m-%Y', errors='coerce')
# 找出转换失败的行
invalid_dates = x1[x1['TS'].isna()]
print(invalid_dates)

3. 验证转换结果

转换完成后,可以用下面的代码快速检查是否还有不匹配的情况:

# 把转换后的时间转回和原始Date一致的字符串格式
x1['TS_str'] = x1['TS'].dt.strftime('%d-%m-%Y')
# 筛选出不匹配的行
mismatch_rows = x1[x1['Date'] != x1['TS_str']]
print(mismatch_rows)

如果输出为空,说明所有日期都转换正确了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:33