如何用pandas多列匹配从另一DataFrame填充value列空值
实现方案
你可以直接用左连接一步完成赋值,不需要额外处理冗余字段,代码如下:
df1['value'] = df1[['first_name', 'last_name', 'dob']].merge( df2, on=['first_name', 'last_name', 'dob'], how='left' )['value']
如果你的数据量较大,后续还有多次匹配需求,可以提前构造查找字典提升效率:
# 构造三匹配键为元组键的映射字典 lookup_map = df2.set_index(['first_name', 'last_name', 'dob'])['value'].to_dict() # 映射填充 df1['value'] = df1.apply( lambda row: lookup_map.get((row['first_name'], row['last_name'], row['dob'])), axis=1 )
两种方案都不受两个表索引、行数差异的影响,匹配逻辑和Excel XLOOKUP完全一致,无匹配结果的行默认保留空值,符合你的需求。
内容的提问来源于stack exchange,提问作者rekeson21
相关产品推荐
相关产品推荐

