如何将Pandas DataFrame中两个日期的差值从天数转换为年份
实现方法
- 方法1:粗略年份计算(简便,可满足大部分场景)
直接对得到的Timedelta列取天数后除以365.25(加入闰年修正),误差在1天以内:
raw['CALCULATED_AGE'] = (raw.COMMENCEMENT_DATE - raw.DATE_OF_BIRTH).dt.days / 365.25 # 如果需要取整数年份,末尾加.astype(int)即可
注:该方法适合不需要严格区分生日是否已过的场景
- 方法2:精确实岁计算(无误差,符合实际年龄统计规则)
通过判断生日是否已过调整年份差值,结果为整数实岁:
# 先计算初始年份差 raw['CALCULATED_AGE'] = raw.COMMENCEMENT_DATE.dt.year - raw.DATE_OF_BIRTH.dt.year # 标记还未到当年生日的行 mask = (raw.COMMENCEMENT_DATE.dt.month < raw.DATE_OF_BIRTH.dt.month) | \ ((raw.COMMENCEMENT_DATE.dt.month == raw.DATE_OF_BIRTH.dt.month) & \ (raw.COMMENCEMENT_DATE.dt.day < raw.DATE_OF_BIRTH.dt.day)) # 未过生日的年份减1 raw.loc[mask, 'CALCULATED_AGE'] -= 1
内容的提问来源于stack exchange,提问作者Anrich
相关产品推荐
相关产品推荐

