求助:基于Ids列合并行数不同的两个DataFrame的正确方法
按匹配Ids合并两个DataFrame的正确方法
你的需求是保留两个DataFrame中共同存在的Ids并合并所有对应列,用merge的内连接(inner join)就能实现,问题应该是参数没设置对,下面是具体解法:
- 核心逻辑:使用
pd.merge,指定按Ids列匹配,并且只保留两边都有的行(内连接) - 代码示例:
import pandas as pd # 执行合并,how='inner'是默认值,写出来更清晰 C = pd.merge(A, B, on='Ids', how='inner')
关键参数说明
on='Ids':明确指定用于匹配的列名,注意要保证A和B的列名完全一致(比如你的列是大写的Ids,别写成小写ids)how='inner':只保留A和B中Ids都存在的行,最终C的行数等于A中在B里有匹配的Ids的数量(最多40行)- 合并后C的列自动包含
Ids, a, b, c, d, y, z,完全符合你的需求
为什么之前的方法不对?
concat是按行/列直接拼接,不会根据键匹配,所以无法实现你的需求- 如果之前用
merge没得到正确结果,大概率是how参数选错了(比如用了left/right),或者on参数的列名拼写不一致
内容的提问来源于stack exchange,提问作者baps
相关产品推荐
相关产品推荐

