Danish
Danish

Reputation: 2871

calculate age from dob and given date in pandas and make age as zero if dob is missing in pandas

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

Answers (1)

Quang Hoang
Quang Hoang

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

Related Questions