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

在两个Pandas DataFrame中实现类Excel VLOOKUP的查找功能

我懂你要做的事儿——就是给df_orig里的每个A列值,从df_new里找出对应的Group_name,就像Excel里的VLOOKUP那样,只不过这里的匹配条件是A列值得存在于df_new的Combined列表中对吧?下面给你两种实用的实现方法:

实现类似VLOOKUP的DataFrame匹配功能

方法1:拆解列表后合并(高效直观,适合大数据集)

先把df_new里每个Combined列表的元素拆成单独行,这样就能用常规的合并操作完成匹配,效率比逐行遍历高很多:

import pandas as pd

# 先还原你的测试数据(方便直接运行)
df_orig = pd.DataFrame({'A': [3,4,6,7,8]})
df_new = pd.DataFrame({
    'Combined': [[8,9,112,114,134,135], [15,16,17,18,19,20], [15,16,17,18,19],
                 [16,17,18,19,20], [15,16,17,18], [8,9,112,114], [18,19,20],
                 [28,29,30], [21,22], [28,29], [26,27], [24,25], [3,4]],
    'Length': [6,6,5,5,4,4,3,3,2,2,2,2,2],
    'Group_name': ['Group 1','Group 2','Group 3','Group 4','Group 5','Group 6',
                   'Group 7','Group 8','Group 9','Group 10','Group 11','Group 12','Group 13']
})

# 把Combined里的每个元素拆成单独行
df_exploded = df_new.explode('Combined', ignore_index=True)
# 统一数据类型,避免匹配失败
df_exploded['Combined'] = df_exploded['Combined'].astype(int)

# 左连接合并,保留df_orig所有行,匹配不到的显示NaN(对应Excel的#N/A)
result = df_orig.merge(df_exploded, left_on='A', right_on='Combined', how='left')
# 只保留需要的列
result = result[['A', 'Group_name']]

print(result)

运行后输出:

A Group_name
0  3    Group 13
1  4    Group 13
2  6         NaN
3  7         NaN
4  8     Group 1

补充说明

  • 如果一个值属于多个Group(比如示例里的8同时在Group1和Group6),这个方法会返回所有匹配结果,你可以用drop_duplicates(subset='A', keep='first')保留第一个匹配项,或者根据Length字段筛选最合适的Group。

方法2:自定义函数逐行匹配(适合小数据集,逻辑直观)

如果你的数据量不大,也可以用apply直接遍历每一行查找匹配,逻辑更直白:

def get_group(value):
    # 遍历df_new,找到第一个包含目标值的分组
    for _, row in df_new.iterrows():
        if value in row['Combined']:
            return row['Group_name']
    return None  # 没找到返回None

# 给df_orig新增Group_name列
df_orig['Group_name'] = df_orig['A'].apply(get_group)
print(df_orig)

输出和方法1完全一致,不过要注意:这种逐行遍历的方式在数据量大的时候效率会很低,优先选方法1更稳妥。

关键注意点

  • 一定要保证df_orig['A']和df_new['Combined']里的元素类型一致(比如都是整数),不然会出现匹配不到的情况
  • 如果需要匹配多个结果,方法1可以保留所有匹配行,方便后续筛选;方法2只会返回第一个匹配的Group

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:32:19