[英]Pandas function equivalent to hlookup in excel
有這個df“ creditor_life_rates_tranpose
”是一個查找表:
我正在嘗試根據鍵“ age
”和“ term_years
”查找值並將其存儲回我的基本數據框“application”。
對於測試數據,基礎 dataframe“ application
”包含列“ age
”、“ term_years
”,其值分別為 49 和 3.8。
基礎 dataframe 應用如下:
age, terms_years
49, 3.8
我們看到年齡 49 位於查找表中,但由於 3.8 不在查找表的term_years
列中,我需要它使用低於 3.8 的最高值進行查找。 在這種情況下,它將是 3.5。 因此應該返回的值是 21.40。
我曾嘗試使用 tail(1) 編寫此 function 根據查找表中的age
和terms_years
僅返回最后一個值
def hlookup_function(age, terms_year):
result= creditor_life_rates_tranpose[(creditor_life_rates_tranpose['age']== age) & (creditor_life_rates_tranpose['term_years'] <= terms_year)]['value'].tail(1).values[0]
return result
然后我會這樣調用 function:
application['result'] = hlookup_function(application.age,(application_data.term_years).round(2))
我期待得到這個作為結果 Dataframe:
age, terms_years, results
49, 3.8, 21.40
順便說一句,如果我傳遞這樣的值而不是應用程序 dataframe 的實際列,則代碼有效。 但我實際上需要通過列。
application['result'] = hlookup_function(49,3.8)
這個 function pd.merge_asof執行我一直在尋找的操作,相當於 Excel 中的 HLOOKUP function。
application_data2 = pd.merge_asof(application_data.sort_values(by=['term_years_lookup'],ascending=True)
,creditor_life_rates_tranpose.sort_values(by=['term_years_lookup'],ascending=True),
on='term_years_lookup',by ='age_lookup')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.