python - 如何将此字符串 '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)
解决方案
关于什么:
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
列转换为datetime
dtype,然后使用当前时间计算时间增量。最后,您从天数计算年数和月数。
推荐阅读
- python - Python3 错误:pip 安装后没有名为 telebot 的模块
- python-3.x - 如何在 elasticsearc_dsl 中搜索 md5 字段
- scala - intellij 工作表中的主要方法不运行?
- sqlite - SQLite 锁定特定列
- python - 500 (Internal Server Error) Python Script 和 End of script output before headers:
- c++ - 如何释放协议缓冲区内存
- mysql - 可以在 SQLite 但不能在 MySQL 中存储和检索对象 Django BinaryField
- regex - 尝试使用 regexp_matches() 编写 SQL 查询在 postgresql 中查找正面
- php - 之后的分钟数
- php - 本周流行 - 本月流行 - PHP 的功能