首页 > 解决方案 > 从数据框列python中删除非日期值

问题描述

我有一个头部看起来像的数据框(df):

        Date
0 01/04/2015
1 01/09/1996
2        N/A
3 12/05/1992
4  NOT KNOWN

有没有办法删除非日期值(不是行)?在此示例中,生成的框架如下所示:

        Date
0 01/04/2015
1 01/09/1996
2        
3 12/05/1992
4  

我能看到的所有示例都希望我删除这些行,我想保留它们。

标签: pythonpandas

解决方案


pd.to_datetime

errors='coerce'

df.assign(Date=pd.to_datetime(df.Date, errors='coerce'))

        Date
0 2015-01-04
1 1996-01-09
2        NaT
3 1992-12-05
4        NaT

如果你愿意,你可以用空字符串填充它们NaT(虽然我不推荐它)

df.assign(Date=pd.to_datetime(df.Date, errors='coerce').fillna(''))

                  Date
0  2015-01-04 00:00:00
1  1996-01-09 00:00:00
2                     
3  1992-12-05 00:00:00
4                     

如果您想保留数据框中的所有内容,只需将看起来不像日期的内容替换为''

df.assign(Date=df.Date.mask(pd.to_datetime(df.Date, errors='coerce').isna(), ''))

         Date
0  01/04/2015
1  01/09/1996
2            
3  12/05/1992
4            

推荐阅读