如何使用Pandas获取公共键相同但对应值不同的DataFrame结果
解决方案
你可以通过2步调整代码实现需求:
- 将merge的连接方式从外连接
outer改为内连接inner,自动过滤仅在单表存在的ID - 增加筛选条件,排除两个Weight值相等的行
调整后完整代码
import pandas as pd A = {"ID":["A", "B","C"], "Weight":[500,300,200]} B = {"ID":["A", "B","D"], "Weight":[500,100,100]} dfA = pd.DataFrame(data=A) dfB = pd.DataFrame(data=B) # 内连接保留共有ID dfC = dfA.merge(dfB, how='inner', on='ID') # 筛选Weight不等的行 dfC = dfC[dfC['Weight_x'] != dfC['Weight_y']] print(dfC)
输出结果
ID Weight_x Weight_y 1 B 300 100
如果业务场景中存在Weight为空的情况,可以额外补充空值判断逻辑:
dfC = dfC[(dfC['Weight_x'] != dfC['Weight_y']) | dfC['Weight_x'].isna() | dfC['Weight_y'].isna()]
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

