首页 > 解决方案 > 如何使用 pandas 弹出导致错误的日期记录?

问题描述

我有一个如下所示的数据框

df = pd.DataFrame({'date': ['45:42.7','11/1/2012 0:00','20/1/2012 2:48','15/1/2012 0:00',np.nan]})

我想将date列转换为 type datetime

所以,我尝试了以下

df['date'] = pd.to_datetime(df['date'])

我收到以下错误

ValueError: hour must be in 0..23

正如我们从示例数据帧中看到的那样,NA不是导致此错误,而是第一条记录是45:42.7.

虽然原始 excel 文件45:42.7在我打开文件时显示此日期值,但当我双击单元格时,它会正确显示实际日期。

如何过滤数据框以弹出第一条记录作为输出(这是导致记录的错误)?

我希望我的输出如下面的示例数据框中所示

df = pd.DataFrame({'error_date': ['45:42.7']})

标签: pythonpandasdataframedatetime

解决方案


首先,如果需要查看错误值转换为日期时间并过滤缺失值,例如:

print(df[pd.to_datetime(df['date'], format='%d/%m/%Y %H:%M',errors='coerce').isna()])

我认为没问题,您需要指定列格式,如果添加参数None,则会生成不匹配的行:NaNerrors='coerce'

df['date'] = pd.to_datetime(df['date'], format='%d/%m/%Y %H:%M',errors='coerce')
print (df)
                 date
0 2012-03-06 08:57:00
1 2012-01-11 00:00:00
2 2012-01-20 02:48:00
3 2012-01-15 00:00:00
4                 NaT

推荐阅读