Pandas如何基于另一DataFrame的匹配规则为目标表新增关联列
Pandas多表合并实现方法
错误原因
你之前的代码默认按行索引拼接两个DataFrame,且没有建立dd的libcs字段和df行的对应关联关系,dd共18万+行、df仅61行,按索引拼接后除前61行外df的字段都会是空值,无法得到预期结果。
正确实现步骤
你需求的匹配逻辑是libcs=1对应df的第0行数据,libcs=2对应df的第1行,以此类推libcs=61对应df的第60行,直接通过关联字段合并即可:
- 先给
df新增匹配用的libcs字段:
df['libcs'] = df.index + 1
- 用
merge按共同字段libcs左连接两个表:
result = dd.merge(df, on='libcs', how='left')
运行后result就是包含BCS、libcs、sample_id、DState四个字段的预期结果表。
简化写法(无需修改原df)
如果不想改动原df的结构,也可以直接通过映射匹配实现:
# 建立libcs到df字段的映射字典 lib_mapping = df.set_index(df.index + 1).to_dict('index') # 给dd批量新增字段 dd['sample_id'] = dd['libcs'].map(lambda x: lib_mapping[x]['sample_id']) dd['DState'] = dd['libcs'].map(lambda x: lib_mapping[x]['DState'])
内容的提问来源于stack exchange,提问作者botloggy
相关产品推荐
相关产品推荐

