簡體   English   中英

Pandas function 相當於 excel 中的 hlookup

[英]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 根據查找表中的ageterms_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM