我有一个数据帧(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
我看到的所有示例都希望我删除行,并希望保留它们。
答案 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