我有一个城市的医疗服务数据框。我想根据两列得到服务对象的年龄:出生日期列和服务日期列。我正在使用python(谷歌协作)。
my dataframe是这样的:
name dob attendance_day
AB 2016-04-09 2017-01-01
CD 2010-07-21 2018-12-30
EF 2017-11-25 2018-12-31
我需要计算da个人的年龄in年月日.
我已经试过了:
输入:
data['age'] = data['attendance_date'] - data['birth_date']
data['age'] = data['age'].dt.days
data['age'] = data['age']//365.25 #convert days into years
输出:
name dob attendance_day age
AB 2016-04-09 2017-01-01 267
CD 2010-07-21 2018-12-30 2908
EF 2017-11-25 2018-12-31 401
所以,我得到了天的年龄。但我需要日、月、年的年龄。有什么代码可以做到这一点吗?
试试这个:
首先导入这个库:
from datetime import date
将日转换为年:
def calculateAge(birthDate):
today = date.today()
age = today.year - birthDate.year - ((today.month, today.day) < (birthDate.month, birthDate.day))
return age
驱动代码:
print(calculateAge(date(1999, 8, 7)), "years")
输出:
22 years
或者试试这个:
from datetime import date
DOB = date(1999, 8, 7)
today = date.today()
time_difference = today - DOB
D = time_difference.days
M = int((D/365)*12)
Y = int(D/365)
print(f"Years: {Y}")
print(f"Months: {M}")
print(f"Days: {D}")
输出:
Years: 22
Months: 264
Days: 8050
如果希望以年、月和日为单位显示年龄,也许可以设置一些if else条件。例如,一个人的年龄是20岁3个月零4天,我做的是一种非常原始的方式,可以在很大程度上即兴发挥。我将工作作为用户的输入,分别取其出生日期、月份和年份。类似地,我将当前日、月和年的值分配给各个变量。第二个任务是简单地减去年份,但要小心设置减去月份和日期的条件,例如,如果dob是6月,而当前是2月,则将月份显示为负数,因此您可以通过将年份差减少1来进行调整,并使用条件语句实现逻辑来显示月份的周期,并对日期差进行类似的调整。此外,在调整日期时也要小心,因为每个月有30天、31天、28天或29天。根据我的想法,闰年的概念可能会使问题变得棘手,但这应该可以解决您的问题。
我想这和你想要的有点类似:
from datetime import date
def age_calculator(birth):
today = date.today()
days = (today - birth).days
months = 0
years = 0
while days >= 365.25:
days -= 365.25
years += 1
while days >= 30.55:
days -= 30.55
months += 1
return f'You are {years} years, {months} months and {int(days)} days old.'
user_year = int(input('Enter your birth year: '))
user_month = int(input('Enter the number of your birth month: '))
user_day = int(input('Enter your birth day: '))
print(age_calculator(date(user_year, user_month, user_day)))
我正在检查它是否准确,在某些日期有一天不准确…但是我不能费心去弄清楚lol。