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

UTC格式字符串转datetime失败,求正确的Pandas实现方法

问题排查与解决方法

问题原因

你的格式字符串%Y-%m-%dT%H:%M:%S.%Z存在错误:%Z用于匹配时区名称(如UTC),但你的时间字符串结构是.000Z——其中.000是毫秒部分,Z是UTC的标记,%Z无法匹配这个结构,导致解析失败。


可行转换方案

方案1:指定正确的格式字符串

将格式改为%Y-%m-%dT%H:%M:%S.%fZ,其中%f用来匹配微秒/毫秒部分(pandas会自动兼容三位毫秒的情况),末尾的Z直接作为固定字符匹配:

import pandas as pd

data = [
    ["2023-09-13T19:17:21.000Z"],
    ["2023-09-13T19:18:22.000Z"],
    ["2023-09-13T19:19:23.000Z"],
]
    
df = pd.DataFrame(data,columns=['ts'])
df['ts'] = pd.to_datetime(df['ts'], format='%Y-%m-%dT%H:%M:%S.%fZ')
print(df)

如果需要保留UTC时区信息,可额外添加utc=True参数:

df['ts'] = pd.to_datetime(df['ts'], format='%Y-%m-%dT%H:%M:%S.%fZ', utc=True)

方案2:让pandas自动解析ISO格式

pandas的pd.to_datetime对ISO 8601格式的时间字符串有原生支持,你可以直接省略format参数,让它自动识别解析:

import pandas as pd

data = [
    ["2023-09-13T19:17:21.000Z"],
    ["2023-09-13T19:18:22.000Z"],
    ["2023-09-13T19:19:23.000Z"],
]
    
df = pd.DataFrame(data,columns=['ts'])
df['ts'] = pd.to_datetime(df['ts'], utc=True)
print(df)

这种方法更简洁,且能正确识别Z标记的UTC时区,返回带时区信息的datetime对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:12