使用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
相关产品推荐
相关产品推荐

