Pandas função equivalente proch no excel

0

Pergunta

Não é este df "creditor_life_rates_tranpose"o que é uma tabela de pesquisa:

enter image description here

Eu estou tentando consultar o valor com base em chaves "age"e "term_years"e de armazenamento de volta para a minha base de dados do quadro "aplicação".

Para os dados de teste, a base dataframe "application"contém colunas "age", "term_years"com valores 49 e 3.8, respectivamente.

Base dataframe aplicativo está abaixo:

age, terms_years
49, 3.8

Vemos que, de 49 anos, está localizado na tabela de pesquisa, mas desde 3.8 não está localizado na term_years coluna da tabela de pesquisa que eu preciso olhar para cima, utilizando o maior valor que é menor do que a 3.8. Neste caso, seria 3.5. Daí o valor que deve ser retornado é 21.40.

Eu tinha tentado a escrever esta função usando a cauda(1) para retornar apenas o último valor com base no age e terms_years a partir da tabela de pesquisa

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

Então eu gostaria de chamar a função como esta:

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

Eu estava esperando para começar esta como resultante Dataframe:

age, terms_years, results
49, 3.8, 21.40

mas estou recebendo este erro: enter image description here

A propósito, o código funciona se eu passar os valores como este, mas não o real colunas da aplicação dataframe. Mas eu preciso realmente para passar as colunas.

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

Melhor resposta

0

Esta função pd.merge_asof executa a operação que eu estava procurando e é equivalente à função PROCH no 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

Em outros idiomas

Esta página está em outros idiomas

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