Reputation: 2871
I have a data frame as shown below. df:
cust_id lead_date dob
1 2016-12-25 1989-12-20
2 2017-10-25 1980-09-20
3 2016-11-25 NaN
4 2014-04-25 1989-12-20
5 2019-12-21 NaN
From the above I would like to calculate age as difference of lead_date with dob in years.
if dob is NaN then make age as 0.
Expected output:
cust_id lead_date dob age
1 2016-12-25 1989-12-20 27
2 2017-10-25 1980-09-20 37
3 2016-11-25 NaN 0
4 2014-04-25 1989-12-20 25
5 2019-12-21 NaN 0
Upvotes: 0
Views: 61
Reputation: 150745
You can do:
# convert to datetime type
df['lead_date'] = pd.to_datetime(df.lead_date)
df['dob'] = pd.to_datetime(df.dob)
df['age'] = (df.lead_date.dt.year - df.dob.dt.year).fillna(0)
Output:
cust_id lead_date dob age
0 1 2016-12-25 1989-12-20 27.0
1 2 2017-10-25 1980-09-20 37.0
2 3 2016-11-25 NaT 0.0
3 4 2014-04-25 1989-12-20 25.0
4 5 2019-12-21 NaT 0.0
Upvotes: 1