📜  在 Pandas 中将出生日期转换为年龄

📅  最后修改于: 2022-05-13 01:55:49.055000             🧑  作者: Mango

在 Pandas 中将出生日期转换为年龄

在本文中,我们将在 Pandas 数据框中将生日转换为年龄。我们将使用 Pandas 和 datetime 包将出生日期转换为年龄。要首先将出生日期转换为年龄,我们使用strptime()函数将给定日期转换为正确的格式,然后用生日年份减去当前年份并检查出生月份和出生日期是否大于当前月份和当前日期如果是真的,我们减去一个,否则减去零。

方法:

  • 首先,我们使用 strptime函数将给定的日期格式识别为日期、月份和年份。
  • 然后我们使用 today函数来获取今天的日期。
  • 为了得到年龄,我们从当前年份中减去出生年份。这给出了以年为单位的年龄,但是,为了进一步计算准确的年龄,我们检查出生月份和出生日期是否大于当前月份和当前日期,如果此条件为真,我们从最终结果中减去 1,即使当前年份是过去了,但他的出生月份或出生日期仍未到来。

示例 1:在此示例中,我们将单个给定日期转换为年龄。

Python3
from datetime import datetime, date
  
born='26/01/2000'
print("Born :",born)
  
#Identify given date as date month and year
born = datetime.strptime(born, "%d/%m/%Y").date()
  
#Get today's date
today = date.today()
  
print("Age :",
      today.year - born.year - ((today.month,
                                          today.day) < (born.month,
                                                        born.day)))


Python3
import pandas as pd
from datetime import datetime, date
  
# Creating a list of date of birth
dob = {'DOB': ['13/05/1986', '12/12/2018', '23/04/2006']}
  
# Creating dataframe
df = pd.DataFrame(data = dob)
  
# This function converts given date to age
def age(born):
    born = datetime.strptime(born, "%d/%m/%Y").date()
    today = date.today()
    return today.year - born.year - ((today.month, 
                                      today.day) < (born.month, 
                                                    born.day))
  
df['Age'] = df['DOB'].apply(age)
  
display(df)


输出:

Born : 26/01/2000
Age : 21

说明:在上面的代码中,我们使用了 datetime 包并导入了 datetime 和 time。我们使用 strptime函数来识别存储在出生变量中的日期,即将 26/01/2000 识别为日期/月/年。然后我们使用 today()函数来获取今天的日期。为了得到年龄,我们使用了公式 today.year – Born.year – ((today.month, today.day) < (born.month,birth.day)。在这里,我们从出生年份中减去当前年份,然后如果当前日期和月份未超过出生日期和月份,我们将减去一,因为他/她的出生日期和月份尚未到来。

示例 2:现在我们将使用具有出生日期列的数据框并将其转换为年龄并将该列添加到该数据框。

蟒蛇3

import pandas as pd
from datetime import datetime, date
  
# Creating a list of date of birth
dob = {'DOB': ['13/05/1986', '12/12/2018', '23/04/2006']}
  
# Creating dataframe
df = pd.DataFrame(data = dob)
  
# This function converts given date to age
def age(born):
    born = datetime.strptime(born, "%d/%m/%Y").date()
    today = date.today()
    return today.year - born.year - ((today.month, 
                                      today.day) < (born.month, 
                                                    born.day))
  
df['Age'] = df['DOB'].apply(age)
  
display(df)

输出:

说明:在上面的代码中使用了 pandas 和 datetime 包。我们创建了一个具有三行不同日期的 DOB 数据框。为了计算年龄,我们创建了一个年龄函数,该函数使用 strptime函数来识别日期/月/年格式的日期。然后我们使用 today()函数来获取今天的日期。为了得到年龄,我们使用了公式 today.year – Born.year – ((today.month, today.day) < (born.month,birth.day)。在这里,我们从出生年份中减去当前年份,然后如果当前日期和月份还没有超过出生日期和月份,我们减去一,因为他/她的出生日期和月份还没有到来。我们在这个函数中返回年龄,它被添加为“年龄”列中的新行。稍后我们显示数据框。