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

Pandas如何基于两DataFrame匹配值更新列及原apply方法失效原因

问题原因分析
  • 核心原因是in操作符对Pandas Series的匹配逻辑不符合预期:当你直接使用x in receipts['Request Number']时,Pandas默认检查的是receipts['Request Number']的行索引是否包含x,而非检查该列的取值是否包含x,这就导致绝大多数匹配逻辑都会返回False。
  • 次要可能原因是两表Request Number列的数据类型不一致:例如Orders表中该列是整数类型1234,Receipts表中是字符串类型"1234",或是某一列的取值存在首尾空格、格式差异,就算匹配逻辑正确也无法命中。
正确实现方案

直接用Pandas内置的isin()方法完成匹配,该方法专门用于判断序列中的值是否存在于另一个可迭代对象中,且性能远高于自定义apply遍历:

# 基础写法,要求两列数据类型完全一致
orders['Received'] = orders['Request Number'].isin(receipts['Request Number'])

# 兼容类型差异的写法,统一转为字符串后再匹配
orders['Received'] = orders['Request Number'].astype(str).isin(receipts['Request Number'].astype(str))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:06