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

如何将DataFrame中yyyy-MM-dd'T'HH:mm:ssZ格式转为datetime并解决报错

报错原因

你的转换代码有三处核心错误,导致格式匹配失败:

  • 格式符不符合Python语法规范:pd.to_datetime()遵循Python原生strptime格式规则,你用的yyyy(4位年)、HH(24小时制小时)是其他语言的写法,Python中对应要写%Y、%H。
  • 格式字符串存在多余字符:你写的HH :mm在小时和冒号之间多打了一个空格,和实际数据里HH:mm紧挨着的结构不匹配。
  • 毫秒标识写错:你写的SSS同样不是Python合法格式符,毫秒/微秒部分要写%f。
正确实现方案

根据你转换后设置为索引的需求,有两种常用写法:

方案1:手动指定格式(解析速度最快,适合格式完全统一的数据集)

写对匹配数据的格式串即可,转换后是无时区的datetime64类型,可直接设为索引:

df['created_at_tweet'] = pd.to_datetime(
    df['created_at_tweet'],
    format="%Y-%m-%dT%H:%M:%S.%fZ"
)
# 设置为索引
df = df.set_index('created_at_tweet')

方案2:自动解析ISO格式(容错性高,适合可能存在格式微小差异的数据集)

你手里的时间是标准ISO8601 UTC格式,不需要手动写格式串,加utc=True参数即可自动解析,解析后是带UTC时区标记的datetime类型,后续做时区转换更方便:

df['created_at_tweet'] = pd.to_datetime(df['created_at_tweet'], utc=True)
# 设置为索引
df = df.set_index('created_at_tweet')

注意:如果你的pandas版本在2.0以上,即使不传format参数,默认解析ISO格式的速度也和手动指定格式差不多,优先选方案2更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:45:46