首页 > 解决方案 > 如何将此字符串 '2012-07-06T21:00:00.000Z' 转换为日期时间格式以计算年龄

问题描述

所以我有一个将出生日期写成字符串的数据框'2012-07-06T21:00:00.000Z'(示例)。

我想从中计算用户的年龄。请注意,这是一个字符串,我认为我需要它是 datetime 才能计算它。

非常感谢

我的代码(Python):

def calculate_age(born):
    born = datetime.strptime(born, "%Y-%m-%d'T'%H:%M:%S.%f%Z").date()
    today = date.today()
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

df['age'] = df['birth_date'].apply(calculate_age) 

标签: pythondatetimetype-conversion

解决方案


关于什么:

import pandas as pd

df['birth_date'] = df['birth_date'].astype('datetime64[ns, UTC]')
df['age'] = pd.Timestamp.utcnow() - df['birth_date']
df['age_str'] = df['age'].apply(lambda td: f'{td.days//365}y{int((td.days/365 - td.days//365)*365/30)}m')

在这里,您首先将birth_date列转换为datetimedtype,然后使用当前时间计算时间增量。最后,您从天数计算年数和月数。


推荐阅读