Panda funcție echivalentă cu hlookup în excel

0

Problema

Există această df "creditor_life_rates_tranpose"care este un tabel de căutare:

enter image description here

Am încercat să se uite în sus valoarea bazată pe chei "age"și "term_years"și magazin de la baza mea de date cadru "cerere".

Pentru datele de test, pe baza dataframe "application"conține coloane "age", "term_years"cu valorile 49 3.8 respectuos.

Baza dataframe cererea este mai jos:

age, terms_years
49, 3.8

Vom vedea că 49 de ani se află în tabelul de căutare, dar din moment ce 3.8 nu este situat în term_years coloana din tabelul de căutare trebuie să se uite în sus, folosind cea mai mare valoare care este mai mică decât 3.8. În acest caz ar fi 3.5. Prin urmare, valoarea care ar trebui să fie returnate este 21.40.

Am încercat să scriu această funcție tail(1) pentru a reveni doar ultima valoare bazate pe age și terms_years din tabelul de căutare

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

Apoi aș apela funcția de genul asta:

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

Ma asteptam la acest lucru ca rezultat Dataframe:

age, terms_years, results
49, 3.8, 21.40

dar primesc aceasta eroare: enter image description here

Apropo, codul funcționează, dacă am trece de valori, cum ar fi acest lucru, dar nu efectiv de coloane ale cererii dataframe. Dar am nevoie pentru a trece de fapt coloanele.

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

Cel mai bun răspuns

0

Această funcție pd.merge_asof efectuează operația am fost în căutarea pentru și este echivalentă cu funcția HLOOKUP în 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

În alte limbi

Această pagină este în alte limbi

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