0
我需要幫助執行timedelta函數以確定actn_dt
是否大於或等於1年前,如果是,則返回經驗值。使用timedelta和布爾值計算時間範圍
數據幀f2
看起來是這樣的:
nm_emp_lst actn_dt
14483 MACKENZIE 2015-03-22
132902 CAMPBELL 2015-04-19
124182 SJOSTROM 2015-03-22
103482 LAPLANTE 2014-11-30
45722 LEMAY 2014-11-30
169088 TAYLOR 2015-06-14
105355 HENDERSON 2015-11-01
105359 HENDERSON 2014-10-19
45394 PELLERIN 2015-07-12
119317 BOISSEAU 2015-07-12
應該是這樣的:
nm_emp_lst actn_dt Experienced
14483 MACKENZIE 2015-03-22
132902 CAMPBELL 2015-04-19
124182 SJOSTROM 2015-03-22
103482 LAPLANTE 2014-11-30 Experienced
45722 LEMAY 2014-11-30 Experienced
169088 TAYLOR 2015-06-14
105355 HENDERSON 2015-11-01
105359 HENDERSON 2014-10-19 Experienced
45394 PELLERIN 2015-07-12
119317 BOISSEAU 2015-07-12
那麼,什麼是等於或高於一年前更大。
做了一個功能:
year = timedelta(days=365)
today2 = datetime.datetime.strftime(datetime.datetime.now(),'%A_%B_%d_%Y_%H%M')
def year(row):
if row['actn_dt'] >= today2 - year:
return "Experienced"
然後lamdba功能:
f2['Experienced'] = f2.apply (lambda row: year (row),axis=1)
由此,我收到錯誤:
TypeError: ("unsupported operand type(s) for -: 'str' and 'function'", u'occurred at index 14483')
我dtypes是:
nm_emp_lst object
actn_dt datetime64[ns]
感謝任何幫助!
===更新===
在jezrael的幫助下,我能夠想出一個解決方案。它可能是漫長的,但它的工作。首先,我必須創建一個新的專欄,在今天的日期之前提供一年的數據。
f2['year1'] = datetime.datetime.now().date() - datetime.timedelta(days=365)
然後,我不得不從timedelta的 'YEAR1' 更改爲datetime:
f2['year1'] = pd.to_datetime(f2['year1'], coerce=True)
在這裏,我使用jezrael提供的編碼。
f2.loc[f2['actn_dt'] <= f2['year1'], 'Experienced'] = "Experienced"
新的結果是:
nm_emp_lst actn_dt year1 Experienced
14483 MACKENZIE 2015-03-22 2015-02-12 NaN
132902 CAMPBELL 2015-04-19 2015-02-12 NaN
124182 SJOSTROM 2015-03-22 2015-02-12 NaN
103482 LAPLANTE 2014-11-30 2015-02-12 Experienced
45722 LEMAY 2014-11-30 2015-02-12 Experienced
169088 TAYLOR 2015-06-14 2015-02-12 NaN
105355 HENDERSON 2015-11-01 2015-02-12 NaN
105359 HENDERSON 2014-10-19 2015-02-12 Experienced
45394 PELLERIN 2015-07-12 2015-02-12 NaN
119317 BOISSEAU 2015-07-12 2015-02-12 NaN
這工作就像一個魅力!謝謝jezrael!
謝謝,jezrael!這很有用,但它沒有在「經驗豐富」的新專欄中提供正確的數據。不知道我在這方面做了些什麼,但是我必須從actn_dt回顧一年。如果actn_dt至少是一年或更久以前,那麼經驗豐富。我試圖改變+來 - 並仍然給我錯誤的信息。 – david
我編輯答案,我希望它可以幫助你。如果沒有,你可以添加到問題的建議輸出 - 最好的是[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve) – jezrael
我提供了一個預期輸出的例子。我想我錯誤地寫了365天,但我不知道如何365和更高。或者一年或更長時間。謝謝。 – david