如何从年龄字段中推算出大概的出生日期?

How to impute an approximate Date of Birth from an age field in years?

我有一些包含出生日期信息的数据(字符串格式)和一个年龄列,如下所示:

id DOB AGE_YEARS
01 1992-06-10 29
03 1991-01-10 30
02 20216-6-10 5

使用时,df['DOB'] = pd.to_datetime(df['DOB'],errors='coerce')结果为:

id DOB AGE_YEARS
01 1992-06-10 29
03 1991-01-10 30
02 NaN 5

这是正确的输出。但是,我知道年龄列既正确又是最新的 (2021-05-31),有没有一种方法可以通过从最后一个中减去 AGE_YEARS 来估算粗略的 DOB(在数据帧上逐行)出生日期有空值的更新日期?

last_updated_date = 2021-05-31

last_updated_date - AGE_YEARS = DOB

使用combine_firsttransform填充NaT:

last_updated_date = pd.to_datetime('2021-05-31')

df['DOB'] = df['DOB'].combine_first(
    df['AGE_YEARS'].transform(lambda x: last_updated_date - pd.DateOffset(years=x))
)
>>> df
   id        DOB  AGE_YEARS
0   1 1992-06-10         29
1   3 1991-01-10         30
2   2 2016-05-31          5