首页 > 解决方案 > 有没有直接的方法可以在python中逐列检查日期格式(使用日期时间)?

问题描述

我在 df 中有一个日期列。现在我想通过逐列检查它是否与特定格式匹配。我是逐行做的,但运行起来需要很多时间。我想知道是否有一种方法可以立即检查该列,该列可能包含空值或不同格式的日期。尽管我尝试按列进行操作,但如果有一条记录不匹配,则将其放入除外。那么,我们该怎么做呢?

代码:

df=
    Date
0  12-22-2020
1  22-12-2020
3  22122020
4
5  02-22-2020
formatt='%m-%d-%Y'
try:
    datetime = dt.strptime(str(df['Date']), formatt) 
    print(datetime )                                
except ValueError:
    print('error')

这给出了:'error'

它作为一个整体给予。但我希望显示接受的记录。我们该怎么做呢?

预期输出:

datetime =
 Date
0  12-22-2020
4
5  02-22-2020

标签: pythondatedatetime

解决方案


您应该使用 pandasto_datetime函数errors='coerce'并保持正确转换的行和初始列中为空的行。

代码可以是

dates = pd.to_datetime(df['Date'], errors='coerce', format='%m-%d-%Y')
dates = dates[(~dates.isna())|df['Date'].isnull()]

它给:

0   2020-12-22
4          NaT
5   2020-02-22

推荐阅读