Python 减去时间并以年为单位输出,四舍五入到小数点后两位

Python 减去时间并以年为单位输出,四舍五入到小数点后两位,python,datetime,datetime-format,Python,Datetime,Datetime Format,我有一个客户生日的数据集,我想把这个变量转换成年数,四舍五入到小数点后两位或三位。我想出了如何将整个列转换为时间戳 一个问题是,我不知道这些数据有多旧,但它是在2019年4月4日发布到一个网站上的,所以我用这一天作为“今天”来计算时间增量 当我尝试减去这两个日期时,差值是以天为单位的 以下是我和TIA所能提供的帮助: 数据以日-月-年格式的DOB开始,即:30-12-1993 ## Making sure all observations are in same format training_

我有一个客户生日的数据集,我想把这个变量转换成年数,四舍五入到小数点后两位或三位。我想出了如何将整个列转换为时间戳

一个问题是,我不知道这些数据有多旧,但它是在2019年4月4日发布到一个网站上的,所以我用这一天作为“今天”来计算时间增量

当我尝试减去这两个日期时,差值是以天为单位的

以下是我和TIA所能提供的帮助:

数据以日-月-年格式的DOB开始,即:30-12-1993

## Making sure all observations are in same format
training_df['DATE_OF_BIRTH'] = pd.to_datetime(training_df['DATE_OF_BIRTH'])


## Checking format of an individual DOB
training_df['DATE_OF_BIRTH'][0]

Out[121]:
Timestamp('1984-01-01 00:00:00')


## Setting "today" as 4-4-2019
data_time_reference=datetime(2019, 4, 4)

data_time_reference

Out[155]:
datetime.datetime(2019, 4, 4, 0, 0)


## Subtracting
data_time_reference - training_df['DATE_OF_BIRTH'][0]
输出是

Timedelta('12877 days 00:00:00')
当我需要它是35.26(即12877除以365.25)


数据在Kaggle.com上:

考虑以下数据帧:

  DATE_OF_BIRTH
0    01-01-1984
1    30-12-1993
2    02-12-1997
3    04-07-1963
4    14-04-2000
#将dates列中的值转换为datetime对象
df[‘出生日期’]=pd.至日期时间(df[‘出生日期’)
#将参考日期设置为减去
数据时间参考=日期时间(2019,4,4)
#获取从参考日期减去后的天数(整数)
df['days\u int']=pd.to\u numeric((数据时间参考-df['DATE\u OF\u BIRTH']).dt.days,downcast='integer')
打印(df)
现在,它看起来是这样的:

  DATE_OF_BIRTH  days_int
0    1984-01-01     12877
1    1993-12-30      9226
2    1997-02-12      8086
3    1963-04-07     20451
4    2000-04-14      6929
然后,将days_int列除以
365.25
并四舍五入到小数点后2位

df['result']=(df['days\u int']/365.25)。四舍五入(2)
最终输出:

  DATE_OF_BIRTH  days_int  result
0    1984-01-01     12877   35.26
1    1993-12-30      9226   25.26
2    1997-02-12      8086   22.14
3    1963-04-07     20451   55.99
4    2000-04-14      6929   18.97

请发布您的
pd.DataFrame
示例,以便我们自己进行测试:很抱歉。我已经添加了数据框中一个DOB的输出和我设置为参考点的日期的输出。@ImmagningNoob,更新了答案。您需要使用
.to_datetime()
将原始日期列转换为datetime对象,然后执行以下操作: