You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:24:04