Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何计算当前年份和列中年份之间的差异?_Python_Datetime_Dataframe_Difference - Fatal编程技术网

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

Python:如何计算当前年份和列中年份之间的差异?,python,datetime,dataframe,difference,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['Curre

我有一个列“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()
这是我得到的输出,看起来很奇怪:

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


非常感谢您的帮助

如果您只想得到不同的年份号,只需使用减法,无需转换为日期时间

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
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

你能用一个小的可复制数据集(文本/CSV格式)和所需的数据集来扩展你的问题吗?现在很清楚你想要实现什么。。。为什么要将年份(整数)转换为
datetime
dtype?我想您需要的只是年份之间的差异?如果是这样,请从代码中删除第三行。将所有代码替换为
df_DD['Years\u Since\u BecameRep']=datetime.now().year-df_DD['DateBecameRep\u year']
仅此而已,否?是的,您是对的。。。我应该把df_DD['DateBecameRep_Year']作为一个浮点数,然后减去——谢谢@我想你只需要:
df\u DD['Years\u Since\u BecameRep']=pd.datetime.now().year-df\u DD['DateBecameRep\u year']