如何从年龄字段中推算出大概的出生日期?
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_first
和transform
填充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
我有一些包含出生日期信息的数据(字符串格式)和一个年龄列,如下所示:
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_first
和transform
填充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