I have two dataframes:

```py
data1 = {
    'id': [1,1,2,2],
    'tag': [700,800,700,800],
    'Membership': [1,0.9,0.8,0.7],
}
data2 = {
    'id': [1,2,3,3],
    'tag': [700,800,600,500],
    'Membership': [0.5,0.9,0.8,0.7],
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

```

Which looks like:

```py
>>> df1
      id   tag  Membership
0      1   700         1.0
1      1   800         0.9
2      2   700         0.8
3      2   800         0.7

>>> df2
      id   tag  Membership
0      1   700         0.5
1      2   800         0.9
2      3   600         0.8
3      3   500         0.7

```

I want to **add rows from df1 to df2, where the combination of `(id,tag)` doesn't exist in df2**.
So, any rows without the condition of `df1['id'] == df2['id'] and df1['tag'] == df2['tag']` should be added to df2:

```py
>>> df2
      id   tag  Membership
0      1   700         0.5
1      2   800         0.9
2      3   600         0.8
3      3   500         0.7
4      1   800         0.9  # This row added
5      2   700         0.8  # This row added

```

### What I've tried:

I tried to find the rows where my condition is not true, then appending the result to df2:

```py
new_rows = df1[~((df1['id'] == df2['id']) & (df1['tag'] == df2['tag']))]
df2 = df2.append(new_rows).reset_index(drop=True)

```

But as you can see, I'm getting wrong result, because (id,tag) pair of (2,800) already exists in df2. why is that?

```py
>>> df2
      id   tag  Membership
0      1   700         0.5
1      2   800         0.9
2      3   600         0.8
3      3   500         0.7
4      1   800         0.9  # correct
5      2   700         0.8  # correct
6      2   800         0.7  # THIS SHOULDN't BE ADDED

```