首页 > 解决方案 > 在 Python 中查找数据框日期列和参考日期之间的时间

问题描述

我有一个数据框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. 我哪里出错了?

标签: pythonpandas

解决方案


您的行df['Age']不正确,使用以下内容获得所需的输出,首先减去df['DoB']然后refDate除以将timedelta天数转换为年数:

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

推荐阅读