Există această df "creditor_life_rates_tranpose
"care este un tabel de căutare:
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
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)