我有一个数据框 df用'date of birth'列的头部,头部看起来像:
DoB
0 19/12/1973
1 22/05/1969
2 23/09/1959
3 04/08/1963
4 25/03/1962
我正在尝试创建一个新列,其中包含此列与称为 refDate 的引用日期变量之间的年数,该变量设置为:2017-03-31类型为 <class 'datetime.date'> .我正在 df 数据框中寻找以下新列
Age
43
47
57
53
55
我试过以下方法:
df['Age'] = df.loc[(refDate - ['Date of birth']).years]
但无法获得名为 Age 的新列.我哪里出错了?
请您参考如下方法:
您的 df['Age'] 行不正确,使用以下内容获得所需的输出,首先从 中减去 然后除以 df['DoB'] >refDatetimedelta将天数转换为年数:
df['DoB'] = pd.to_datetime(df['DoB'])
df['Age'] = (pd.to_datetime('2017-03-31') - df['DoB'])/np.timedelta64(1, 'Y')
print(df)
DoB Age
0 1973-12-19 43.280834
1 1969-05-22 47.858614
2 1959-09-23 57.520688
3 1963-04-08 53.980575
4 1962-03-25 55.018241
或者如果你想要整数年,那么:
df['Age'] = ((pd.to_datetime('2017-03-31') - df['DoB'])/np.timedelta64(1, 'Y')).astype(int)
print(df)
DoB Age
0 1973-12-19 43
1 1969-05-22 47
2 1959-09-23 57
3 1963-04-08 53
4 1962-03-25 55
