Pandas如何基于f_uuid关联键将另一DataFrame的i_uuid列合并到目标表
实现方案
以下是基于Python Pandas库的两种常用实现方法:
方法1:merge左连接(通用方案,适合绝大多数场景)
直接通过左连接关联两个DataFrame,完全保留第一个表的所有行,匹配成功的行自动填充对应i_uuid,未匹配的行默认填充NaN:
import pandas as pd # 假设df1是第一个DataFrame,df2是第二个仅存f_uuid和i_uuid的DataFrame df1 = df1.merge(df2, on='f_uuid', how='left')
- 如果你需要将未匹配行的NaN替换为自定义默认值,可以新增一步填充逻辑:
# 示例替换为空白字符串,可按需修改为其他值 df1['i_uuid'] = df1['i_uuid'].fillna('')
方法2:map映射(小体量数据速度更快)
先将第二个表转为f_uuid到i_uuid的映射字典,再给第一个表赋值新列:
# 生成映射字典,使用前需确认df2的f_uuid是唯一值,否则重复key的value会被覆盖 uuid_map = df2.set_index('f_uuid')['i_uuid'].to_dict() # 给df1新增i_uuid列 df1['i_uuid'] = df1['f_uuid'].map(uuid_map)
注意事项
- 如果df1本身已经存在i_uuid列,merge操作会自动给重复列加
_x/_y后缀区分,你可以提前删除df1的原有i_uuid列,或者通过suffixes参数自定义后缀规则 - 两种方法都只会保留df1的所有行,自动忽略df2存在但df1不存在的f_uuid值,符合你的需求
内容的提问来源于stack exchange,提问作者caasswa
相关产品推荐
相关产品推荐

