如何定位Python DataFrame中pandas.to_datetime转换失败的异常行?
快速定位日期转换异常行的方法
你可以借助pd.to_datetime的errors参数实现高效筛选,百万级数据集也能快速出结果,具体操作步骤如下:
- 先执行带容错的日期转换,把转换失败的值强制转为空时间值(NaT):
temp_dt = pd.to_datetime(df["Dt_Customer"], format='%d-%m-%y', errors='coerce')
- 筛选所有转换失败的对应行:
# 所有无法完成转换的异常行都会存在这个变量里 abnormal_rows = df[temp_dt.isna()]
常见问题排查方向
从报错提示unconverted data remains: 12来看,大概率是部分日期的年份为4位格式,你可以按以下方向验证:
- 查看异常行的日期字符串长度分布:
abnormal_rows['Dt_Customer'].str.len().value_counts()
- 正常符合
%d-%m-%y格式的字符串长度为8位(比如05-10-23),如果大量异常值长度为10位,说明这些值用的是4位年份格式%d-%m-%Y(比如05-10-2023),调整转换格式重新转换即可。
内容的提问来源于stack exchange,提问作者Thiru Balaji G
相关产品推荐
相关产品推荐

