已知年份和月份计算年龄

#将年月拼接如:1991-03
df = df.withColumn('bir',F.concat_ws('-',df.ageY,df.ageM))
#将字符串转换为日期如:1991-03-01
df = df.withColumn('bir',F.to_date(df.bir))
#计算当前日期与指定日期的月份差如:287.1254
df = df.withColumn('diff',F.months_between(F.current_date(),df.bir))
#将月份差向下取整(未到生日的月则年龄不会增长)
df = df.withColumn('age',(df.diff/12).cast(IntegerType()))
#删除多余的列
df = df.drop('diff','bir')
结果如下图(请忽略sex):

网友评论