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

Python中两个pandas DataFrame实现Vlookup匹配操作的问题咨询

实现方法

方案1:melt转长表后合并(推荐,性能更好)

先把宽格式的df2转换为和df1字段匹配的长格式,再通过公共字段合并即可,适合绝大多数场景,尤其是数据量较大的情况:

# 将df2的水果列转为行,生成ref和对应数值列
df2_long = df2.melt(id_vars='id', var_name='ref', value_name='target_val')
# 按id和ref两个字段合并,结果直接写入df1
df1 = df1.merge(df2_long, on=['id', 'ref'], how='left')

运行后得到的df1效果如下:

idreftarget_val
aapple1
borange5
cbanana9

方案2:逐行取值(适合小数据集)

如果数据量很小,也可以用apply逐行匹配取值,写法更简洁:

df1['target_val'] = df1.apply(lambda row: df2.loc[df2['id'] == row['id'], row['ref']].iloc[0], axis=1)

注意:如果存在id匹配失败、或ref值不在df2列名中的情况,方案1会自动填充NaN,容错性更高;方案2需要保证所有ref和id都能匹配到,否则会触发索引错误。


内容的提问来源于stack exchange,提问作者chicagobeast12

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:04