我有一个如下数据框。

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

10-07 21:53