这几天我一直在尝试使用 Pandas 解决一些问题,但我觉得我错过了一些东西。我有 2 个数据框:
data = {'GMC1':[1, 1, 1, 2, 3, 3, 3],
'Provider1':[100, 101, 102, np.NaN, 104, 105, 106]}
dataframe1 = pd.DataFrame(data)
dataframe1
输出:
GMC1 Provider 1
1 100
1 101
1 102
2 NaN
3 104
3 105
3 106
和
data2 = {'GMC2':[1, 2, 3, 3, 3],
'Provider2':[101, 100, 104, 105, 107]}
dataframe2 = pd.DataFrame(data2)
dataframe2
输出:
GMC2 Provider2
1 101
2 100
3 105
3 104
3 107
我希望返回一个数据帧,该数据帧连接到 GMC1 = GMC2,并返回 Provider2 行(这些行在 Provider1 中不存在),GMC1 和 GMC2 的值相同。
预期输出:
GMC1 GMC2 Provider 2
2 2 100
3 3 107
我尝试了使用联接的各种方法,如下所示:
(dataframe1.merge(dataframe2, left_on='GMC1', right_on='GMC2',
how='right')
.query('Provider1 != Provider2')
)
但他们并没有完全带回我想要的东西。我知道这有点啰嗦,所以我很乐意详细说明。
非常感谢您的帮助!
最佳答案
对列和指标参数使用外连接,并按此新列进行过滤_merge
:
df = dataframe1.merge(dataframe2,
left_on=['GMC1', 'Provider1'],
right_on=['GMC2', 'Provider2'],
how='right',
indicator=True)
df = (df.loc[df['_merge'].eq('right_only'), ['GMC1','GMC2','Provider2']]
.assign(GMC1 = lambda x: x['GMC2']))
print (df)
GMC1 GMC2 Provider2
1 2 2 100
4 3 3 107
关于python - Pandas Dataframe 合并其中 1 列匹配,但另一列的值不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69823420/