首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Pandas DataFrame中将天转换为年

在Pandas DataFrame中将天转换为年
EN

Stack Overflow用户
提问于 2021-09-02 13:44:03
回答 1查看 124关注 0票数 0

我正在尝试找出熊猫DataFrame中两个日期之间的差异,这是我的代码:

代码语言:javascript
复制
raw['CALCULATED_AGE'] = ((raw.COMMENCEMENT_DATE - raw.DATE_OF_BIRTH))

这为我提供了以下输出:

Pandas Output Column

我只想把天转换成年,有什么简单的方法吗?

非常感谢

EN

Stack Overflow用户

回答已采纳

发布于 2021-09-02 13:49:07

您可以使用"relativedelta“并将其与您的案例相匹配:

代码语言:javascript
复制
from dateutil.relativedelta import relativedelta
rdelta = relativedelta(raw.COMMENCEMENT_DATE,raw.DATE_OF_BIRTH).years

完整代码示例:

创建数据:

代码语言:javascript
复制
import pandas as pd
from dateutil.relativedelta import relativedelta
raw = pd.DataFrame({'COMMENCEMENT_DATE': ['3/10/2000', '3/11/2000', '3/12/2000'],
                   'DATE_OF_BIRTH': ['3/10/1990', '3/11/1991', '3/12/1990']})

raw['COMMENCEMENT_DATE'] = pd.to_datetime(raw['COMMENCEMENT_DATE'])
raw['DATE_OF_BIRTH'] = pd.to_datetime(raw['DATE_OF_BIRTH'])

计算:

代码语言:javascript
复制
raw['CALCULATED_AGE'] = raw.apply(lambda x: relativedelta(x.COMMENCEMENT_DATE, x.DATE_OF_BIRTH).years, axis=1)

输出:

代码语言:javascript
复制
  COMMENCEMENT_DATE DATE_OF_BIRTH  CALCULATED_AGE
0        2000-03-10    1990-03-10              10
1        2000-03-11    1991-03-11               9
2        2000-03-12    1990-03-12              10

编辑

另一种解决方案也可以持续几个月:

代码语言:javascript
复制
raw['CALCULATED_AGE'] = (raw.COMMENCEMENT_DATE - raw.DATE_OF_BIRTH)/np.timedelta64(1, 'Y')
raw['CALCULATED_AGE'] = raw['CALCULATED_AGE'].astype(int)

如果要计算几个月,只需将“Y”更改为“M”即可。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69031513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档