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

Python Pandas中如何将'20180227'类字符串转为日期格式?

解决Pandas解析YYYYMMDD格式字符串为日期时出现1970年日期的问题

出现这种问题的核心原因是:pd.to_datetime默认自动推断日期格式时,对'20180227'这类连续数字字符串的解析逻辑出现偏差,误将其识别为Unix时间戳(从1970-01-01开始的秒数),从而生成1970年附近的错误日期。

以下是具体的解决方法:

1. 明确指定日期格式(最直接有效)

既然已知字符串是YYYYMMDD格式,直接通过format参数告诉Pandas解析规则,就能精准转换:

import pandas as pd

# 示例数据
df = pd.DataFrame({'colname': ['20180227', '20201231', '20190615']})
# 转换日期格式
df['colname'] = pd.to_datetime(df['colname'], format='%Y%m%d')

其中%Y代表4位年份,%m是2位月份,%d是2位日期,完全匹配你的字符串格式。

2. 处理列中的无效数据

如果列内存在不符合YYYYMMDD格式的内容(比如长度不对、非法日期),解析会抛出错误。可以通过errors参数控制处理逻辑:

  • errors='coerce':将无效值转为NaT(日期类型的空值)
  • errors='ignore':保留原始字符串不进行转换
  • errors='raise':默认行为,直接抛出错误终止程序

示例代码:

df['colname'] = pd.to_datetime(df['colname'], format='%Y%m%d', errors='coerce')

3. 确保列数据类型为字符串

如果你的列存储的是整数而非字符串,也可能导致解析错误。先将列转为字符串再处理:

df['colname'] = pd.to_datetime(df['colname'].astype(str), format='%Y%m%d')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:16