使用Pandas将指定列值替换为另一DataFrame对应列值的解决方案
Pandas 邮箱字段高效替换方案
针对超5万行数据的替换需求,推荐使用字典映射的实现方式,避免merge关联带来的性能损耗,实现逻辑如下:
- 将存储新邮箱的DataFrame转换为以员工ID为键、新邮箱为值的映射字典
- 对主表的员工ID字段执行映射查询,查询不到的结果保留原有邮箱值
完整实现代码
import pandas as pd # 构造主表(员工基础信息) data = { 'emp_id': [111, 222, 333, 444, 555], 'emp_name': ['Sam','Joe','Jake','Rob','Matt'], 'email_id': ['one@gmail.com','two@gmail.com','three@gmail.com','four@gmail.com','five@gmail.com'] } data = pd.DataFrame(data) # 构造新邮箱表 data1 = { 'emp_id': [111, 333, 555], 'email_id': ['one@yahoo.com','three@yahoo.com','five@yahoo.com'] } data1 = pd.DataFrame(data1) # 核心替换逻辑 email_mapping = data1.set_index('emp_id')['email_id'].to_dict() data['email_id'] = data['emp_id'].map(email_mapping).fillna(data['email_id']) # 输出结果 print(data)
方案优势
- 字典查找的时间复杂度为O(1),仅需遍历主表1次即可完成全量替换,5万行数据执行耗时通常在10毫秒以内
- 逻辑简洁易维护,不会产生merge带来的多余字段或索引变动问题
内容的提问来源于stack exchange,提问作者Sasha18
相关产品推荐
相关产品推荐

