python - 在 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
. 我哪里出错了?
解决方案
您的行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
推荐阅读
- javascript - 从函数传递两个变量
- python - Django REST 自定义(令牌)身份验证
- javascript - Chrome JS 控制台,如何在后台运行?
- mysql - mysqldump只有评论没有数据
- python - 在 Python 2.7 和 Windows XP 上使用 pytesseract
- python - 熊猫数据框匹配行
- linux - 如何在没有root帐户的情况下进行chmod?
- xamarin - 从 Android.Media.Image 转换为 Android.Graphics.Bitmap(可能使用 Xamarin)
- node.js - 在 VS 代码中简化 next.js(客户端和服务器)的调试
- ios - Angular js 1.7.3 - 站点未仅在 IOS 中加载,显示无法加载模板且 httpStatus 代码未定义。清除缓存后它可以工作