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