2017-05-14 160 views
0

我有一個只包含年份值的列「DateBecameRep_Year」(即1974年,1999年等)。我想在我的數據框中創建一個新的列,以計算「DateBecameRep_Year」字段中當前年份與年份之間的差異。Python:如何計算btw當前年份和年份的差異?

下面是我嘗試使用代碼:

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

這是輸出我得到這看起來很奇怪:

enter image description here

我的假設是,這已經是與如下:

enter image description here

任何幫助,非常感謝!

+0

你可以用小重現的數據集(文本/ CSV格式)和所需的數據集擴展你的問題?目前,你現在很清楚你想達到什麼目的......爲什麼你想要將年份(整數)轉換爲'datetime' dtype? – MaxU

+0

我想你只是需要年份之間的差異?如果是的話從代碼中移除第三行。 –

+0

用'df_DD ['Years_Since_BecameRep'] = datetime.now()。year - df_DD ['DateBecameRep_Year']'代替所有代碼,就這樣,不是嗎? –

回答

0

如果您只是想獲得不同的年份數,您可以簡單地使用減法,無需轉換爲日期時間。

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 
相關問題