将日期时间天转换为年

时间:2020-01-14 01:48:07

标签: python pandas datetime

所以我试图用DOB计算现在的日期与“年龄”列之间的差值。

我的代码是

then()

但是我已经以天为单位了

df = df.rename(columns={'dob Y':'Year','dob M':'Month','dob D':'Day'})
df = df.head(13)


import datetime
#df['DOB'] = pd.to_datetime(df[['Day','Month','Year']])
df['Age'] = (datetime.datetime.now()-pd.to_datetime(df[['Day','Month','Year']]))

df['Age']
# [i.days for i in df['Age']]

我尝试除以365.25,但给出的单位仍然是天(如下所示)

0    3381 days 01:44:57.149175
1    3513 days 01:44:57.149175
2    3132 days 01:44:57.149175
3    3740 days 01:44:57.149175
4    4551 days 01:44:57.149175
5    3205 days 01:44:57.149175
6    3814 days 01:44:57.149175
7    5820 days 01:44:57.149175
8    4533 days 01:44:57.149175
9    2445 days 01:44:57.149175
10   2665 days 01:44:57.149175
11   5528 days 01:44:57.149175
12   3707 days 01:44:57.149175
Name: Age, dtype: timedelta64[ns]

我正在尝试将年龄四舍五入到小数点后两位。例子12.96年

1 个答案:

答案 0 :(得分:1)

由于this post中所述的问题,由于年份长度的变化,无法从几天中获得确切的年份。

如果要使用365.25(或链接文章建议的365.2425)作为一年中的天数,则可以执行以下操作:

df['Age'] = pd.to_numeric((datetime.datetime.now()-pd.to_datetime(df[['Day','Month','Year']])).days / 365.2425)

包括int()强制转换,这样我们就不会得到长整数。