python - 熊猫数据框中的年龄计算
问题描述
我的数据框看起来像 -
id dob
1 13/01/1978
2 03/08/1957
3 22/12/1977
我想根据“dob”列计算年龄。
id dob age
1 13/01/1978 43
2 03/08/1957 64
3 22/12/1976 44
我已经完成了下面的代码,但它不工作
now = datetime.datetime.now()
data['dob'] = pd.to_datetime(data['dob'])
data['age'] = (now.date() - data['dob']).astype('<m8[Y]')
解决方案
这是一个解决方案:
d = { 'Id': [1,2,3],
'dob': ['13/01/1978', '03/08/1957', '22/12/1977'] }
df = pd.DataFrame(d)
df['dob']= pd.to_datetime(df['dob'])
now = datetime.datetime.now()
df['age'] = df['dob'].apply(lambda x: now.year - x.year)
#Output:
Id dob age
0 1 1978-01-13 43
1 2 1957-03-08 64
2 3 1977-12-22 44
这个版本更精确,因为基于天而不是年份:
df['age_2'] = df['dob'].apply(lambda x: int((now - x).days / 365.25) )
#Output:
Id dob age age_2
0 1 1978-01-13 43 43
1 2 1957-03-08 64 64
2 3 1977-12-22 44 43
推荐阅读
- ios - 滚动水平集合视图时的随机行为
- jquery - Sharepoint 2013 旋转图像并保存到列表
- highcharts - Highcharts 条形图 类别 分词
- oracle - 无法在我的 Oracle PL/SQL 程序中创建嵌套包
- sql-server - Visual Studio 2017 - 通过按钮删除 SQL 数据库行
- python-3.x - 我可以一个一个地在我的 cwd 中搜索多个文件吗?
- c++ - 是否可以将多个整数分配给一个?
- bash - 状态变化时如何ping网页并发送电子邮件?
- java - G1年轻gc突然花了更多时间完成
- c# - 用户管理器访问失败异步不递增