Excel'de hlookup'a eşdeğer Pandalar işlevi

0

Soru

Bu df var "creditor_life_rates_tranpose"bu bir arama tablosu:

enter image description here

Anahtarlara dayalı değeri aramaya çalışıyorum "age" ve "term_years"ve temel veri çerçeveme geri sakla "uygulama".

Test verileri için temel veri çerçevesi "application"sütunları içerir "age", "term_years"49 ve 3.8 değerleriyle saygıyla.

Temel dataframe uygulaması aşağıdadır:

age, terms_years
49, 3.8

49 Yaşının arama tablosunda bulunduğunu, ancak 3.8'in arama tablosunda bulunmadığını görüyoruz. term_years arama tablosunun sütunu 3.8'den düşük olan en yüksek değeri kullanarak aramam gerekiyor. Bu durumda 3.5 olur. Bu nedenle, döndürülmesi gereken değer 21.40'tır.

Bu işlevi, yalnızca son değeri temel alarak döndürmek için tail(1) kullanarak yazmaya çalıştım. age ve terms_years arama tablosundan

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

O zaman bu işlevi şöyle çağırırdım:

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

Bunu elde edilen Veri Çerçevesi olarak almayı bekliyordum:

age, terms_years, results
49, 3.8, 21.40

ama bu hatayı alıyorum: enter image description here

Bu arada, uygulama veri çerçevesinin gerçek sütunlarını değil, bu gibi değerleri iletirsem kod çalışır. Ama aslında sütunları geçmem gerekiyor.

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

En iyi cevabı

0

Bu işlev pd.merge_asof, aradığım işlemi gerçekleştirir ve Excel'deki HLOOKUP işlevine eşdeğerdir.

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

Diğer dillerde

Bu sayfa diğer dillerde

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