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

如何将仅含年份的object列转换为DD/MM/YYYY格式datetime类型

根因说明
  • 转换后全为1970年的核心原因是:pandas默认会将纯数字或数字型字符串尝试解析为Unix时间戳(以1970-01-01 00:00:00 UTC为起点计算的秒数),1965~2020的数值作为秒数仅对应1970年1月1日前后几十分钟的时间,因此最终输出全部显示为1970年。
解决办法

你仅存年份的情况下要转为DD/MM/YYYY格式的日期,默认会补全为当年1月1日,也可根据需求自定义补全的月日,以下是两种可行方案:

方案1:指定format参数强制解析年份

调用pd.to_datetime时明确标注输入为4位年份,避免pandas误判为时间戳,示例代码:

# 替换year_col为你的实际列名
df['date_col'] = pd.to_datetime(df['year_col'], format='%Y')

如果需要输出DD/MM/YYYY格式的字符串展示,可通过dt.strftime转换:

df['formatted_date'] = df['date_col'].dt.strftime('%d/%m/%Y')

方案2:手动拼接完整日期后转换

如果你需要自定义补全的月、日,可先拼接为完整日期字符串再转换,示例为补全为每年12月31日的代码:

df['date_col'] = pd.to_datetime('31/12/' + df['year_col'], format='%d/%m/%Y')
注意事项
  • 旧版本别名pd.datetime存在兼容风险,建议统一使用pd.to_datetime执行转换操作
  • 如果年份列存在异常值,可添加参数errors='coerce',将无法解析的内容转为空值NaT,避免转换报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:03