Python:如何计算当前年份和列年份之间的差异?

Pin*_*ts0 3 python datetime dataframe difference

我有一列“DateBecameRep_Year”,其中仅包含年份值(即 1974 年、1999 年等)。我想在数据框中创建一个新列,用于计算当前年份与“DateBecameRep_Year”字段中年份之间的差异。

下面是我尝试使用的代码:

df_DD['DateBecameRep_Year'] = pd.to_datetime(df_DD['DateBecameRep_Year'])

df_DD['Current Year'] = datetime.now().year
df_DD['Current Year'] = pd.to_datetime(df_DD['Current Year'])

df_DD['Years_Since_BecameRep'] = df_DD['Current Year'] - df_DD['DateBecameRep_Year']  
df_DD['Years_Since_BecameRep'] = df_DD['Years_Since_BecameRep'] / np.timedelta64(1, 'Y')

df_DD['Years_Since_BecameRep'].head()
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出,看起来很奇怪:

在此输入图像描述

我的假设是,这与以下因素有关:

在此输入图像描述

任何帮助是极大的赞赏!

Tin*_*y.D 6

如果您只想获得不同的年份数字,您可以简单地使用减法,无需转换为日期时间。

import pandas as pd
import datetime
current_year = datetime.datetime.now().year #get current year
df_DD = pd.DataFrame.from_dict({"DateBecameRep_Year":[1999,2000,2015,1898,1788,1854]})
df_DD['Current Year'] = datetime.datetime.now().year
df_DD["Years_Since_BecameRep"] = df_DD['Current Year'] - df_DD['DateBecameRep_Year']  # substract to get the year delta
Run Code Online (Sandbox Code Playgroud)

df_DD将:

    DateBecameRep_Year  Current Year    Years_Since_BecameRep
0   1999                2017            18
1   2000                2017            17
2   2015                2017            2
3   1898                2017            119
4   1788                2017            229
5   1854                2017            163
Run Code Online (Sandbox Code Playgroud)