Python如何基于DataFrame的出生日期和服务日期计算年月日格式年龄
解决方案
Google Colab环境默认已安装dateutil依赖,无需额外安装,直接运行以下代码即可得到年、月、日三个维度的年龄结果:
步骤1:导入依赖并格式化日期列
import pandas as pd from dateutil.relativedelta import relativedelta # 将出生日期、服务日期列转为datetime格式,避免格式报错 data['dob'] = pd.to_datetime(data['dob']) data['attendance_day'] = pd.to_datetime(data['attendance_day'])
步骤2:定义年龄计算函数并应用
def get_age_details(row): date_diff = relativedelta(row['attendance_day'], row['dob']) return pd.Series([date_diff.years, date_diff.months, date_diff.days]) # 新增三个独立维度的年龄列 data[['age_year', 'age_month', 'age_day']] = data.apply(get_age_details, axis=1) # 可选:合并为单独的完整年龄字符串列 data['full_age'] = data.apply(lambda x: f"{x['age_year']}岁{x['age_month']}月{x['age_day']}日", axis=1)
输出结果示例
针对你提供的示例数据,最终输出格式如下:
name dob attendance_day age_year age_month age_day full_age 0 AB 2016-04-09 2017-01-01 0 8 23 0岁8月23日 1 CD 2010-07-21 2018-12-30 8 5 9 8岁5月9日 2 EF 2017-11-25 2018-12-31 1 1 6 1岁1月6日
说明
你之前的方法直接用天数除以365.25只能得到近似的年份数值,无法拆分出月、日维度,且存在闰年、大小月天数差异带来的计算误差。relativedelta会自动处理所有日期边界问题,计算结果符合实际年龄统计规则。
内容的提问来源于stack exchange,提问作者Aline Priscila Souza
相关产品推荐
相关产品推荐

