从数据框列python中删除非日期值

时间:2018-11-05 16:16:53

标签: python pandas

我有一个数据帧(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  

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

2 个答案:

答案 0 :(得分:4)

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            

答案 1 :(得分:0)

一种更简单的解决方法。

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

>>> df['Date'] = pd.to_datetime(df['Date'], errors='coerce').fillna('')
>>> df
                  Date
0  2015-01-04 00:00:00
1  1996-01-09 00:00:00
2
3  1992-12-05 00:00:00