Jest taka df "creditor_life_rates_tranpose
"który jest tabelą wyszukiwania:
Próbuję znaleźć wartość, oparte na kluczach "age
"i "term_years
"i zapisać z powrotem w mój podstawowy ramka danych "aplikacja".
Dla danych testowych za pomocą podstawowego ramka danych "application
"zawiera kolumny "age
", "term_years
"z wartościami 49 3,8 pozdrawiam.
Aplikacja bazowego ramki danych przedstawiono poniżej:
age, terms_years
49, 3.8
Widzimy, że w wieku 49 lat znajduje się w tabeli wyszukiwania, ale tak jak 3.8 nie znajduje się w term_years
kolumna tabeli wyszukiwania potrzebuję, aby spojrzał w górę, korzystając z największą wartość, która jest mniejsza niż 3,8. W tym przypadku byłoby to 3,5. W konsekwencji, wartość, która musi być zwrócony wynosi 21,40.
Starałem się napisać tę funkcję za pomocą tail(1), aby oddać ostatnią wartość w oparciu na age
i terms_years
z tabeli wyszukiwania
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
Następnie ja bym wywołał funkcję w następujący sposób:
application['result'] = hlookup_function(application.age,(application_data.term_years).round(2))
Spodziewałem się dostać to w postaci wypadkowego ramki danych:
age, terms_years, results
49, 3.8, 21.40
Przy okazji, kod działa, jeśli przekazuję takie wartości, ale nie rzeczywiste kolumny ramki danych aplikacji. Ale muszę faktycznie przejść kolumny.
application['result'] = hlookup_function(49,3.8)