Python使用strptime解析日期时报错时间格式不匹配如何解决
报错原因排查
- 格式串不匹配带AM/PM的12小时制时间:你声明的格式串包含
%f(微秒占位符),但实际待解析的时间字符串没有微秒部分,反而带有PM这类12小时制上下午标识,且你使用的%H是24小时制小时标识,无法匹配12小时制的时间表达 - 日期列格式不统一:待解析的字段存在两类完全不同的格式,一类是带时分秒+上下午的长日期格式,一类是只有年月日的短日期格式,单一格式串无法覆盖所有取值
解决方法
优先推荐使用pandas内置的日期解析方法,无需手动匹配格式,可自动兼容多格式场景:
import pandas as pd # 直接传入待解析的列,pandas会自动识别不同格式完成转换 df['DATE'] = pd.to_datetime(df['Transaction_date'])
如果需要手动使用strptime实现解析,可编写兼容多格式的解析函数:
import datetime as dt def parse_custom_date(date_str): try: # 匹配带时分秒和上下午的长格式:%I对应12小时制小时,%p对应AM/PM标识 return dt.datetime.strptime(date_str, '%m/%d/%Y:%I:%M:%S %p') except ValueError: # 匹配只有年月日的短日期格式 return dt.datetime.strptime(date_str, '%m/%d/%Y') df['DATE'] = df['Transaction_date'].apply(parse_custom_date)
内容的提问来源于stack exchange,提问作者alwayzconfused
相关产品推荐
相关产品推荐

