You need to enable JavaScript to run this app. Pandas基于公共列值关联DataFrame:将B表Location列合并到A的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Pandas基于公共列值关联DataFrame:将B表Location列合并到A的实现方法

基于pd.join()实现两表关联的可落地方案

pd.join()的底层默认基于索引对齐完成两表关联。由于你当前两个表的关联列名称不同(A表为Mobile_number、B表为Cell_number),无法直接通过同名列名传参匹配,需要先把关联列设置为各自的索引再做关联,全程不会引入多余字段。

完整可运行代码

import pandas as pd

# 初始化示例DataFrame
a = {'Name': ['Jake', 'Paul', 'Logan', 'King'], 
     'Age': [33,43,22,45], 
     'Mobile_number':[332,554,234, 832]}
A = pd.DataFrame(a)

b = {'Cell_number': [832,554,123,333], 
     'Blood_group': ['O', 'A', 'AB', 'AB'], 
     'Location': ['TX', 'AZ', 'MO', 'MN']}
B = pd.DataFrame(b)

# join关联核心逻辑
result = A.set_index('Mobile_number').join(
    B.set_index('Cell_number')[['Location']],  # 仅选取需要的Location列,避免冗余字段
    how='left'  # 左连接,保留A表全部原有行
).reset_index()  # 将临时索引列恢复为普通列

结果说明

执行代码后得到的最终DataFrame,完全覆盖你要求的Name、Age、Mobile_number、Location四列,具体值如下:

Mobile_numberNameAgeLocation
332Jake33NaN
554Paul43AZ
234Logan22NaN
832King45TX

关键避坑提醒

直接写A.join(B, on='Mobile_number')会触发KeyError报错,因为join的on参数仅能匹配两表名称完全相同的列,当两个表关联列名称不一致时,必须通过设置索引的方式完成对齐匹配。
选择左连接how='left'的策略,既不会丢失A表的原有记录,也不会把B表中无匹配的行(比如手机号123、333对应的Location值)拉入结果,完全匹配你的关联需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 21:06:03