【问题标题】:Pandas function equivalent to hlookup in excelPandas 函数相当于 excel 中的 hlookup
【发布时间】:2022-01-02 12:44:12
【问题描述】:

有这个 df "creditor_life_rates_tranpose" 是一个查找表:

我正在尝试根据键“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) 编写此函数,以仅返回基于查找表中 ageterms_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

但我收到此错误:

顺便说一句,如果我传递这样的值而不是应用程序数据框的实际列,则代码可以工作。但我实际上需要通过列。

application['result'] = hlookup_function(49,3.8)

【问题讨论】:

  • 请提供具有预期输出的示例数据框
  • @QuangHoang 谢谢!熊猫太强大了。这是我一直在寻找的功能。这正是我想要实现的目标。

标签: python pandas dataframe function series


【解决方案1】:

这个函数pd.merge_asof 执行我正在寻找的操作,相当于Excel 中的HLOOKUP 函数。

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')

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2018-11-30
    • 1970-01-01
    • 2014-03-05
    • 2019-05-29
    • 1970-01-01
    • 2023-01-03
    • 2011-05-21
    • 2015-01-03
    相关资源
    最近更新 更多