python - 以“1992 年 11 月 4 日 (27)”的格式拆分 pandas DataFrame 的 DoB 列,以获得作为日期时间的 DoB
问题描述
我正在使用抓取数据的 pandas DataFrame。对于该dob
列,记录采用以下格式:
1992 年 11 月 4 日 (27)
我需要拆分字符串以创建格式为“dd/mm/yyyy”的出生日期列,例如 04/11/1992。我将采用拆分字符串并使用 pd.to_datetime() 函数进行转换。
我还想创建一个年龄列,例如 27。使用当前日期和时间而不是字符串拆分的更优雅的解决方案会很棒。
我想出了一些我自己的解决方案,但我相信这可以使用正则表达式或类似的表达式更优雅地完成。
提前感谢您的帮助!
解决方案
如果要从日期计算年龄,进行比较:
import pandas as pd
from datetime import datetime
today = datetime.today()
df = pd.DataFrame({'DOB': ['Nov 4, 1992 (27)']})
df[['Date', 'Age']] = df['DOB'].str.extract(r'(.+) \((\d+)\)')
df['Date'] = pd.to_datetime(df['Date'])
df['Calculated Age'] = df['Date'].apply(
lambda x: today.year - x.year -
((today.month, today.day) < (x.month, x.day))
)
推荐阅读
- python - 测试一个字符串是否代表一个数字
- python - Python:如果不使用 asyncio.gather(),为什么还要使用 AsyncIO?
- android - 来自有界服务的 StartActivityForResult
- r - 如何将 cut() 集成到 predict() 为我创建的模型预测变量
- c - 当我的数据类型为双倍时,为什么我的输出显示指数结果?
- linux-kernel - 在重新映射的地址范围内分配内存
- python - 如何删除一组字符串的第一项
- r - 关于get_mon_arrivals的R simmer包问题
- javascript - 如何使用 puppeteer 返回新页面?
- python - 单层感知器实现的问题