pandas转换含时间区间的date_time列出现ParserError如何解决
问题解决方案
报错原因
你的date_time列存储的是带UTC标记的时间段字符串,包含开始、结束两个时间点,不属于pandas默认支持的单个时间点格式,因此直接调用pd.to_datetime会抛出解析错误。
解决方案
根据你的使用需求,可以选择以下两种处理方式:
方案1:拆分出开始、结束两个时间列(推荐,完整保留原始时间段信息)
# 移除末尾的(UTC)标记,按分隔符拆分出两个时间字符串 df[['start_time', 'end_time']] = df['date_time'].str.replace(r'\s*\(UTC\)$', '', regex=True)\ .str.split(' - ', expand=True) # 指定格式转换为datetime类型,utc=True表示保留时区属性 dt_format = '%d.%m.%Y %H:%M' df['start_time'] = pd.to_datetime(df['start_time'], format=dt_format, utc=True) df['end_time'] = pd.to_datetime(df['end_time'], format=dt_format, utc=True) # 可选:删除原始的date_time列 df = df.drop(columns=['date_time'])
注意:如果你的日期格式是
月.日.年而非日.月.年,请把dt_format修改为'%m.%d.%Y %H:%M'
方案2:仅保留单个时间点
如果你只需要用到时间段的开始时间,可以直接提取后转换:
dt_format = '%d.%m.%Y %H:%M' df['date_time'] = pd.to_datetime(df['date_time'].str.split(' - ').str[0], format=dt_format, utc=True)
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

