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

Pandas合并后DataFrame如何实现类VLOOKUP操作提取无匹配旧ID

问题排查与解决方案

你的需求完全可以在pandas中实现,和Excel的判断逻辑本质是一致的,你此前的写法出现空结果有两类常见原因:

  1. 代码存在语法错误
    你给出的示例代码缺少右侧闭合符号,修正后的基础写法如下:
# 筛选符合条件的old_ID列
deletes = mydf.loc[mydf['new_ID'] == "no match was found", 'old_ID']
# 转为列表格式输出
deletes_list = deletes.tolist()
  1. 字符串匹配存在格式偏差
    如果修正语法后仍返回空结果,基本是new_ID列中存储的“no match was found”存在你没注意到的格式差异:可能前后有多余空格、换行符,或者大小写不统一。
    可以先运行以下代码确认new_ID列的实际取值:
# 输出new_ID列的所有去重取值,确认无匹配条目的实际标识
print(mydf['new_ID'].unique())

如果确实存在格式问题,可以先标准化字段再筛选:

# 先去除两端空白、统一转为小写再匹配,避免格式问题导致匹配失效
match_condition = mydf['new_ID'].str.strip().str.lower() == "no match was found"
deletes_list = mydf.loc[match_condition, 'old_ID'].tolist()

如果后续需要直接把无匹配条目的old_ID填充到new_ID列,也可以直接用numpy.where实现:

import numpy as np
mydf['new_ID'] = np.where(mydf['new_ID'].str.strip().str.lower() == "no match was found", mydf['old_ID'], mydf['new_ID'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:54:02