You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套VLOOKUP与MATCH的Excel公式转换为Pandas实现

Excel公式转Pandas合并操作实现

公式逻辑拆解

原始Excel公式的计算逻辑如下:

  • 首先判断当前行J列(对应df_1['Data(COLUMN_J)'])是否为空,为空直接返回7
  • 不为空的情况下:
    • 用当前行I列的COD值(df_1['COD(COLUMN_I)'])匹配Abrang表的COD列
    • 用当前行L列的Type值(df_1['Type(COLUMN_L)'])匹配Abrang表的对应Type列
    • 匹配成功返回对应值,匹配失败返回0

实现代码

你可以通过宽表转长表+左合并的方式实现需求,完整代码如下:

import pandas as pd

# 你给出的两个DataFrame定义
data_1 = {'COD(COLUMN_I)': [763807643,45968455,56565435,5833250],
 'Data(COLUMN_J)':["16/11/2021","19/11/2021","19/11/2021","09/11/2021"],
 'Type(COLUMN_L)': ["Type 1", "Type 2","Type 3","Type 4"]}
 
data_2 = {'COD(COLUMN_I)': [763807643,45968455,56565435,5833250],
          'Type_1':["4","21","9","8"],
          'Type_2': ["5", "45","3","8"],
          'Type_3': ["12", "43","54","6"],
          'Type_4': ["7", "5","2","1"]
          }
df_1 = pd.DataFrame(data=data_1)
Abrang = pd.DataFrame(data=data_2)

# 步骤1:将Abrang宽表转为长表,适配合并逻辑
Abrang_long = Abrang.melt(
    id_vars='COD(COLUMN_I)', 
    var_name='match_type', 
    value_name='match_result'
)
# 把Abrang的Type字段下划线替换为空格,和df_1的Type格式对齐
Abrang_long['match_type'] = Abrang_long['match_type'].str.replace('_', ' ')

# 步骤2:左合并两个表,保留df_1所有行
merged_df = df_1.merge(
    Abrang_long,
    left_on=['COD(COLUMN_I)', 'Type(COLUMN_L)'],
    right_on=['COD(COLUMN_I)', 'match_type'],
    how='left'
)

# 步骤3:按照Excel公式逻辑生成最终结果列
merged_df['final_result'] = merged_df.apply(
    lambda row: 7 if pd.isna(row['Data(COLUMN_J)']) or row['Data(COLUMN_J)'].strip() == ''
                else int(row['match_result']) if not pd.isna(row['match_result'])
                else 0,
    axis=1
)

# 清理不需要的中间字段
merged_df = merged_df.drop(columns=['match_type', 'match_result'])

结果说明

最终得到的merged_df就是合并后的目标表,其中final_result列对应Excel公式的计算结果,按照你给出的示例数据,计算结果依次为4、45、54、1。如果需要实现原Excel中VLOOKUP的近似匹配逻辑,只需要在合并前对Abrang表按COD(COLUMN_I)升序排序即可。


内容的提问来源于stack exchange,提问作者João Galdino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:15:02