Pandas中DataFrame日期列转datetime报错,请求技术协助
解决pandas将object类型日期转为datetime报错的问题
问题重现
DataFrame中Order Date列数据如下:
Order Date 0 04/19/19 08:46 2 04/07/19 22:30 3 04/12/19 14:38 4 04/12/19 14:38 5 04/30/19 09:27
该列数据类型为object:
df.dtypes # 输出: # Order Date object
执行转换代码时报错:
df['Order Date']=pd.to_datetime(df['Order Date'], format='%m/%d/%y %H:%M')
报错信息:
ValueError: time data '04/19/19 08:46' does not match format '%m/%d/%y %H:%M' (match)
解决方法
1. 清理日期字符串的隐藏空白字符
多数情况下报错是因为字符串前后存在看不见的空格、换行符或制表符,先做数据清理:
# 去除字符串前后所有空白字符 df['Order Date'] = df['Order Date'].str.strip() # 重新执行转换 df['Order Date'] = pd.to_datetime(df['Order Date'], format='%m/%d/%y %H:%M')
2. 让pandas自动推断日期格式
如果清理后仍报错,可以省略format参数,让pandas自动识别格式,同时用errors='coerce'标记转换失败的数据:
df['Order Date'] = pd.to_datetime(df['Order Date'], errors='coerce')
3. 排查异常数据
如果转换后出现NaT值,筛选这些行查看异常格式:
# 找出转换失败的行 invalid_rows = df[df['Order Date'].isna()] print(invalid_rows)
确认是否有其他格式的日期混入(比如dd/mm/yyyy格式、缺少时间部分等),再针对性调整转换逻辑。
内容的提问来源于stack exchange,提问作者user19859618
相关产品推荐
相关产品推荐

