熊猫数据框中的年龄计算

时间:2021-03-25 17:17:12

标签: python pandas scikit-learn

我的数据框看起来像 -

id       dob 
1       13/01/1978  
2       03/08/1957
3       22/12/1977

我想根据“dob”列计算年龄。

id       dob             age
1       13/01/1978        43    
2       03/08/1957        64
3       22/12/1976        44

我已经完成了下面的代码,但它不起作用

now = datetime.datetime.now()
data['dob'] = pd.to_datetime(data['dob'])
data['age'] = (now.date() - data['dob']).astype('<m8[Y]')

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

d = { 'Id': [1,2,3],
      'dob': ['13/01/1978', '03/08/1957', '22/12/1977'] }
df = pd.DataFrame(d)
df['dob']= pd.to_datetime(df['dob'])
now = datetime.datetime.now()
df['age'] = df['dob'].apply(lambda x: now.year - x.year)


#Output:

    Id  dob         age
0   1   1978-01-13  43
1   2   1957-03-08  64
2   3   1977-12-22  44

这个版本更精确,因为基于天而不是年:

df['age_2'] =  df['dob'].apply(lambda x: int((now - x).days / 365.25) )

#Output: 

    Id   dob        age age_2
0   1   1978-01-13  43  43
1   2   1957-03-08  64  64
2   3   1977-12-22  44  43