Skip to main content
 首页 » 编程设计

python之在 Python 中查找数据框日期列和引用日期之间的时间

2025年05月04日20langtianya

我有一个数据框 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'] >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