C'è questa df "creditor_life_rates_tranpose
"che è una tabella di ricerca:
Sto provando a cercare il valore in base alle chiavi "age
"e "term_years
"e archivio i miei dati di base telaio "applicazione".
Per i dati di prova, la base dataframe "application
"contiene le colonne "age
", "term_years
"con i valori di 49 e 3.8 rispettosamente.
Base dataframe applicazione è qui sotto:
age, terms_years
49, 3.8
Vediamo che ha 49 anni, è situato nella tabella di ricerca, ma dal 3.8 non si trova in term_years
colonna della tabella di ricerca ho bisogno di cercare di utilizzare il più alto valore che è inferiore a 3.8. In questo caso sarebbe 3.5. Quindi il valore che deve essere restituito è 21.40.
Avevo provato a scrivere questa funzione utilizza tail(1) per restituire solo l'ultimo valore, in base al age
e terms_years
dalla tabella di ricerca
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
Poi vorrei chiamare la funzione come questa:
application['result'] = hlookup_function(application.age,(application_data.term_years).round(2))
Io mi aspettavo di avere questo come risultante Dataframe:
age, terms_years, results
49, 3.8, 21.40
A proposito, il codice funziona, se mi passa i valori di questo tipo, ma non l'effettivo colonne di applicazione dataframe. Ma ho bisogno di passare effettivamente le colonne.
application['result'] = hlookup_function(49,3.8)