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

Pandas merge合并DataFrame触发KeyError:'Address'报错如何解决

报错根因

KeyError: 'Address'的触发原因非常明确:你传入merge方法的右表根本没有Address列。

  • 你写的df2['email']是从DataFrame中抽取单列的操作,返回结果是仅包含email字段的一维Series,你之前重命名得到的Address列完全没有被传入merge逻辑
  • pandas做表关联时,要求on参数指定的关联键必须在左右两个表中同时存在,右表找不到对应列时就会直接抛出KeyError,和df1的列结构、字段数据类型没有任何关系。
修复方法

方案1:保留原有重命名逻辑

合并时右表必须同时包含关联键和待匹配字段,不要只传入单列:

df2.rename(columns = {'Add.':'Address'}, inplace = True)
# 右表选取关联键+待匹配字段两个列
df1 = df1.merge(df2[['Address', 'email']], how="left", on = "Address")

方案2:省略重命名步骤

不需要提前修改df2的列名,直接通过left_on、right_on分别指定两个表的关联字段即可,合并后删除冗余列:

df1 = df1.merge(
    df2[['Add.', 'email']],
    how="left",
    left_on="Address",
    right_on="Add."
)
# 删除重复的地址列
df1.drop(columns=['Add.'], inplace=True)
匹配逻辑提示

普通merge默认做严格等值匹配,只有两个表的地址字符串完全一致时才能关联成功。从你给出的样例数据看:

  • df1中1111、1233两个地址可以正常匹配到对应email
  • df1中3456和df2中345689、345699仅前缀相似、值不完全相等,无法通过普通merge关联,如果需要做前缀/包含类的模糊匹配,需要单独编写字符串匹配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:54:30