Stacey
Stacey

Reputation: 5107

Remove non date values from data-frame column python

I have a dataframe (df) which the head looks like:

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

Is there a way to remove the non date values (not the rows)? With this example the resulting frame would look like:

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

All the examples I can see want me to drop the rows and I'd like to keep them.

Upvotes: 2

Views: 1677

Answers (2)

Karn Kumar
Karn Kumar

Reputation: 8816

One more simple way around..

>>> 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

Upvotes: 0

piRSquared
piRSquared

Reputation: 294338

pd.to_datetime

With 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

You can fill those NaT with empty strings if you'd like (though I don't recommend it)

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                     

If you want to preserve whatever the things were in your dataframe and simply replace the things that don't look like dates with ''

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            

Upvotes: 6

Related Questions