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

使用pd.to_datetime转换DataFrame日期列全为NaT的问题

解决pd.to_datetime转换后返回NaT的问题

你的问题核心出在时区格式的匹配逻辑上:你的日期字符串是'1979-01-01 00:00:00 +0000 UTC',虽然你指定的format='%Y-%m-%d %H:%M:%S %z %Z'看起来逻辑对应,但pandas的to_datetime对%Z(时区名称,比如UTC)的支持在部分版本中并不完善,导致整个解析失败返回NaT。

给你几个可行的解决方案:

方案1:让pandas自动解析(最简单)

这个格式属于标准的带时区日期格式,pandas本身可以自动识别,不需要手动指定format:

df['date'] = pd.to_datetime(df['date'], errors='coerce')

方案2:手动指定格式,剥离时区名称部分

如果一定要手动控制解析逻辑,可以先把字符串末尾的UTC去掉,只保留时区偏移+0000,再用%z解析:

# 拆分字符串,去掉最后一个空格后的UTC部分
df['date_clean'] = df['date'].str.rsplit(' ', 1).str[0]
# 转换为datetime类型
df['date'] = pd.to_datetime(df['date_clean'], format='%Y-%m-%d %H:%M:%S %z', errors='coerce')

方案3:使用dateutil.parser进行灵活解析

如果pandas的自动解析还是有问题,可以借助dateutil库的解析器,它对各种日期格式的兼容性更好:

from dateutil import parser

df['date'] = df['date'].apply(lambda x: parser.parse(x) if pd.notna(x) else pd.NaT)

优先试试方案1,大部分情况下都能解决问题;如果不行再尝试方案2或3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:02:36