I've been trying to solve something using Pandas for a few days now, but I feel like I'm missing something. I have 2 dataframes:
data = {'GMC1':[1, 1, 1, 2, 3, 3, 3],
'Provider1':[100, 101, 102, np.NaN, 104, 105, 106]}
dataframe1 = pd.DataFrame(data)
dataframe1
output:
GMC1 Provider 1
1 100
1 101
1 102
2 NaN
3 104
3 105
3 106
and
data2 = {'GMC2':[1, 2, 3, 3, 3],
'Provider2':[101, 100, 104, 105, 107]}
dataframe2 = pd.DataFrame(data2)
dataframe2
output:
GMC2 Provider2
1 101
2 100
3 105
3 104
3 107
I would like a dataframe returned which joins on GMC1 = GMC2, and brings back the Provider2 rows where they are not present in Provider1, for the same values of GMC1 and GMC2.
Expected output:
GMC1 GMC2 Provider 2
2 2 100
3 3 107
I have tried various approaches using joins, like this:
(dataframe1.merge(dataframe2, left_on='GMC1', right_on='GMC2',
how='right')
.query('Provider1 != Provider2')
)
But they don't quite bring back what I want. I'm aware this is a bit wordy, so I'm very happy to elaborate.
Many thanks in advance for your help!