返回其中列中的值不是日期类型的数据框行

时间:2018-10-17 07:56:55

标签: python pandas

我有一个数据框df,看起来像:

 Name   Date of birth
  Bob   
Steve      22/07/1963
   Jo          pencil
Karen      03/02/1953
Frank      29/09/1994

是否可以返回Date of birth不是日期的行?

在上面的示例中,我将返回:

 Name   Date of birth
  Bob   
   Jo          pencil

Date of birth不是日期。

我可以使用以下方法识别出生日期的空白值:

missingDoBError = df.loc[df['Date of birth'].isnull()]

我尝试使用以下方法查找出生日期值,其中该值不是设置为NaT的日期格式:

if pd.to_datetime(df['Date of birth'], format='%d-%b-%Y', errors='coerce').notnull().all():

但是我无法使它正常工作。

1 个答案:

答案 0 :(得分:1)

我相信您需要将格式更改为%d/%m/%Y并测试缺少的值:

m2 = pd.to_datetime(df['Date of birth'], format='%d/%m/%Y', errors='coerce').isnull()
#or skip parameter format if performance is not important
#m2 = pd.to_datetime(df['Date of birth'], errors='coerce').isnull()

df = df[m2]
print (df)
  Name Date of birth
0  Bob           NaN
2   Jo        pencil

如果要忽略NaN行,则用另一个AND&)链接另一个布尔掩码以测试不丢失值:

m1 = df['Date of birth'].notnull()
m2 = pd.to_datetime(df['Date of birth'], format='%d/%m/%Y', errors='coerce').isnull()

df = df[m1 & m2]
print (df)
  Name Date of birth
2   Jo        pencil