我有一个如下数据框。
name birthdate
-----------------
john 21011990
steve 14021986
bob
alice 13020198
我想在生日日期列中检测到无效值,然后更改值。
birthdate列的使用日期格式为“ DDMMYYYY”。但数据框中的格式无效,也为“ 13020198”,“”。我想将无效数据更改为31125000。
我想要如下结果
name birthdate
-----------------
john 21011990
steve 14021986
bob 31125000
alice 31125000
谢谢
最佳答案
您可以首先创建无效的日期掩码,然后更新其值:
mask = df.birthdate.apply(lambda x: pd.to_datetime(x, format='%d%m%Y', errors='coerce')).isna()
df.loc[mask, 'birthdate'] = 31125000
name birthdate
0 john 21011990
1 steve 14021986
2 bob 31125000
3 alice 31125000