大熊猫功能相当于hlookup在excel

0

的问题

有这df"creditor_life_rates_tranpose"这是一个查找表:

enter image description here

我试图寻找价值的基础上钥匙"age"和"term_years"和储存回到我的基本数据的框架"的应用程序"。

对测试数据,基数据框"application"载列"age","term_years"值49和3.8尊敬。

基础数据框应用程序如下:

age, terms_years
49, 3.8

我们看到,年龄49位于查询表,但由于3.8不是位于 term_years 列表查找我需要它来查找使用最高值低于3.8. 在这种情况下,这将是3.5. 因此价值,应该返回是21.40.

我曾试图写这种功能使用的尾巴(1)只返回的最后一个值基础上的 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

然后我会打电话的功能,像这样:

application['result'] = hlookup_function(application.age,(application_data.term_years).round(2))

我期待得到这个所得的数据框:

age, terms_years, results
49, 3.8, 21.40

但我得到这个错误: enter image description here

顺便说一句,该代码的工作,如果我传递值,这样,但不实际的列应用程序的数据框. 但我需要以实际通过列。

application['result'] = hlookup_function(49,3.8)
dataframe function pandas python
2021-11-24 04:36:22
1

最好的答案

0

这一功能 pd。merge_asof 执行的操作是我在寻找和相当于HLOOKUP功能在Excel中。

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')
2021-11-24 13:41:42

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................