Функция панды, эквивалентная hlookup в Excel

0

Вопрос

Есть такой дф "creditor_life_rates_tranpose"которая является таблицей поиска:

enter image description here

Я пытаюсь найти значение, основанное на ключах "age"и "term_years"и сохраните обратно в мой базовый фрейм данных "приложение".

Для тестовых данных используется базовый фрейм данных "application"содержит столбцы "age", "term_years"со значениями 49 и 3,8 с уважением.

Приложение базового фрейма данных приведено ниже:

age, terms_years
49, 3.8

Мы видим, что возраст 49 лет находится в таблице поиска, но так как 3.8 не находится в term_years столбец таблицы поиска Мне нужно, чтобы он смотрел вверх, используя наибольшее значение, которое меньше 3,8. В этом случае это было бы 3,5. Следовательно, значение, которое должно быть возвращено, равно 21,40.

Я пытался написать эту функцию с помощью tail(1), чтобы вернуть только последнее значение, основанное на age и terms_years из таблицы поиска

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

Затем я бы вызвал функцию следующим образом:

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

Я ожидал получить это в виде результирующего фрейма данных:

age, terms_years, results
49, 3.8, 21.40

но я получаю эту ошибку: enter image description here

Кстати, код работает, если я передаю такие значения, но не фактические столбцы фрейма данных приложения. Но мне нужно на самом деле пройти колонны.

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

Лучший ответ

0

Эта функция pd.merge_asof выполняет операцию, которую я искал, и эквивалентна функции HLOOKUP в 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

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................