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

Pandas merge后筛选_merge字段报KeyError: 'right_only'/'both'问题求解

问题原因

错误出在loc筛选的条件语句上,Python中比较运算符==的优先级高于三元表达式,你写的逻辑不会按照预期执行:
实际运行时会先计算comparison_result['_merge'] == 'left_only'得到布尔值,再判断如果compare_type == 'l'就返回这个布尔值,否则直接返回字符串'right_only'或'both'。
当compare_type为r或b时,你传给loc的是字符串而非布尔筛选序列,pandas会把字符串当做行索引查找,自然抛出KeyError。

修复方案

把三元表达式整体用括号包裹,调整运算优先级即可,修改后的筛选代码如下:

comparison_result = comparison_result.loc[comparison_result['_merge'] == ('left_only' if (compare_type == 'l') else 'right_only' if (compare_type == 'r') else 'both')]

修改后三种比对模式都可以正常运行:

  • compare_type='l':筛选仅在左表存在的记录
  • compare_type='r':筛选仅在右表存在的记录
  • compare_type='b':筛选两表共有的匹配记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:39:03