如何基于id匹配为Pandas DataFrame a新增来自DataFrame b的description列
实现方法
你可以通过两种常用的Pandas方法实现需求:
方法1:merge 关联(适用多字段匹配场景)
使用左连接保留a表的全部行,仅关联b表的id和description字段即可:
import pandas as pd # 仅保留b表需要关联的两个字段,和a表基于id左连接 a = a.merge(b[['id', 'description']], on='id', how='left') # 可选:调整列顺序为你需要的 id、description、value a = a[['id', 'description', 'value']]
方法2:map 映射(适用单个字段提取场景,性能更高)
先从b表构建id到description的映射字典,直接给a表赋值新列:
# 构建id到description的映射关系 id_desc_map = dict(zip(b['id'], b['description'])) # 给a表新增description列 a['description'] = a['id'].map(id_desc_map) # 可选:调整列顺序 a = a[['id', 'description', 'value']]
补充说明
如果a表存在b表中没有匹配到的id,对应description字段会自动填充NaN,你可以根据需要后续调用fillna()方法自定义填充默认值。如果后续需要同时从b表提取colour等其他字段,直接修改merge方法中b表选取的列即可,无需额外开发逻辑。
内容的提问来源于stack exchange,提问作者Ed Jefferies
相关产品推荐
相关产品推荐

