如何基于两列匹配规则从第二个DataFrame更新首个DataFrame的列值
实现方案
核心使用pandas的左连接操作即可实现需求,支持df1中的重复行自动匹配:
- 以df1为左表,df2为右表,指定
name和surname两个列为匹配键,执行左连接 - 左连接会完整保留df1的所有行,匹配上的记录自动填充df2里的
account_id字段,未匹配的记录默认填充空值NaN,可按需替换为自定义占位符 - 若df1原本已存在
account_id列需要更新,可先删除原列再执行合并操作
示例代码
import pandas as pd # 构造示例df1 df1 = pd.DataFrame({ 'name': ['john', 'mary', 'peter', 'mary', 'john', 'paul'], 'surname': ['doe', 'doe', 'someone', 'doe', 'another', 'another'] }) # 构造示例df2 df2 = pd.DataFrame({ 'name': ['peter', 'john', 'mary', 'john'], 'surname': ['someone', 'doe', 'doe', 'another'], 'account_id': [100, 200, 300, 400] }) # 核心合并逻辑 df1 = df1.merge(df2, on=['name', 'surname'], how='left') # 可选:将未匹配的空值替换为自定义占位符 df1['account_id'] = df1['account_id'].fillna('<empty>') # 输出结果 print(df1)
输出结果
name surname account_id 0 john doe 200 1 mary doe 300 2 peter someone 100 3 mary doe 300 4 john another 400 5 paul another <empty>
内容的提问来源于stack exchange,提问作者Sergio Siqueira
相关产品推荐
相关产品推荐

