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

使用pandas to_datetime转换日期字符串时遇错误求助

解决pandas中EDT时区日期字符串转datetime的问题

你的问题核心是Python标准库的%Z指令不支持EDT这类夏令时时区缩写,导致pd.to_datetime指定format失败,下面给两个实用解决办法:

方法1:移除时区缩写后手动指定时区

先剥离日期字符串里的EDT部分,转成无时区的datetime,再通过完整时区名称本地化:

import pandas as pd

# 读取数据
df = pd.read_csv("Orders2022.csv")
# 移除末尾的EDT(正则匹配任意结尾的单词)
df['Order Date'] = df['Order Date'].str.replace(r' \w+$', '', regex=True)
# 转换为datetime类型
df['Order Date'] = pd.to_datetime(df['Order Date'], format='%d-%b-%Y %I:%M %p')
# 本地化到美国东部时区(EDT对应的完整时区)
df['Order Date'] = df['Order Date'].dt.tz_localize('America/New_York')

方法2:用dateutil自动解析

dateutil.parser对非标准时区缩写兼容性更好,无需手动指定格式:

import pandas as pd
from dateutil import parser

df = pd.read_csv("Orders2022.csv")
# 逐行解析日期字符串
df['Order Date'] = df['Order Date'].apply(parser.parse)

补充说明

Python标准datetime模块的%Z仅识别系统本地时区或UTC这类通用缩写,对EDT、EST这类夏令时专属缩写支持有限,这就是你之前指定format报错的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:58:16