我有一个数据框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():
但是我无法使它正常工作。
答案 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