Les Pandas fonction équivalente à hlookup dans excel

0

La question

Il y a cette df "creditor_life_rates_tranpose"ce qui est une table de recherche:

enter image description here

Je suis en train de regarder la valeur en se basant sur les touches "age"et "term_years"et de stocker de retour à ma base de données d'image "application".

Pour les données de test, la base dataframe "application"contient des colonnes "age", "term_years"avec les valeurs de 49 et 3,8 respectueusement.

La Base de dataframe application est ci-dessous:

age, terms_years
49, 3.8

Nous voyons que l'âge de 49 ans se trouve dans la table de recherche, mais depuis 3.8 est pas situé dans le term_years colonne de la table de recherche j'en ai besoin pour rechercher à l'aide de la valeur la plus élevée qui est inférieur de 3,8. Dans ce cas, il serait de 3,5. D'où la valeur qui doit être retournée est de 21,40.

J'avais essayé d'écrire cette fonction à l'aide de la queue(1) pour retourner uniquement la dernière valeur calculée sur la base age et terms_years à partir de la table de recherche

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

Ensuite, je voudrais appeler la fonction comme ceci:

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

Je m'attendais à obtenir ce que le Dataframe:

age, terms_years, results
49, 3.8, 21.40

mais j'obtiens cette erreur: enter image description here

Par ailleurs, le code fonctionne si je passe les valeurs de ce type, mais pas les colonnes réelles de l'application dataframe. Mais j'ai besoin de passer à l'colonnes.

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

La meilleure réponse

0

Cette fonction pd.merge_asof effectue l'opération que je cherchais et est équivalente à la fonction HLOOKUP dans 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

Dans d'autres langues

Cette page est dans d'autres langues

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