Los Pandas función equivalente a la de buscarh en excel

0

Pregunta

No es este el df "creditor_life_rates_tranpose"que es una tabla de búsqueda:

enter image description here

Estoy tratando de buscar el valor en función de teclas "age"y "term_years"y la tienda de nuevo a mi base de datos de marco de "aplicación".

Para los datos de prueba, la base de dataframe "application"contiene las columnas "age", "term_years"con los valores de 49 y 3.8 respectivamente.

Base dataframe de la aplicación es el siguiente:

age, terms_years
49, 3.8

Vemos que la edad de 49 se encuentra en la tabla de búsqueda pero ya 3.8 no se encuentra en el term_years columna de la tabla de búsqueda que lo necesito para buscar utilizando el mayor valor que es inferior a 3.8. En este caso sería de 3.5. De ahí el valor que se debe devolver es 21.40.

Yo había tratado de escribir esta función a través de la cola(1) para devolver sólo el último valor basado en la age y terms_years a partir de la tabla de búsqueda

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

A continuación, me gustaría llamar a la función como esta:

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

Yo estaba esperando a conseguir este como el resultado Dataframe:

age, terms_years, results
49, 3.8, 21.40

pero estoy recibiendo este error: enter image description here

Por cierto, el código funciona, si me pasan los valores como este, pero no las columnas de la aplicación dataframe. Pero tengo que pasar a las columnas.

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

Mejor respuesta

0

Esta función de la pd.merge_asof realiza la operación que estaba buscando y es equivalente a la función BUSCARH en 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

En otros idiomas

Esta página está en otros idiomas

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