title: Pandas: Find rows which don't exist in another DataFrame by multiple columns
body: <p>same as this <a href="https://stackoverflow.com/questions/32651860/python-pandas-how-to-find-rows-in-one-dataframe-but-not-in-another">python pandas: how to find rows in one dataframe but not in another?</a>
  but with multiple columns</p>
  
  <p>This is the setup:</p>
  
  <pre><code>import pandas as pd
  
  df = pd.DataFrame(dict(
      col1=[0,1,1,2],
      col2=['a','b','c','b'],
      extra_col=['this','is','just','something']
  ))
  
  other = pd.DataFrame(dict(
      col1=[1,2],
      col2=['b','c']
  ))
  </code></pre>
  
  <p>Now, I want to select the rows from <code>df</code> which don't exist in other. I want to do the selection by <code>col1</code> and <code>col2</code></p>
  
  <p>In SQL I would do:</p>
  
  <pre><code>select * from df 
  where not exists (
      select * from other o 
      where df.col1 = o.col1 and 
      df.col2 = o.col2
  )
  </code></pre>
  
  <p>And in Pandas I can do something like this but it feels very ugly. Part of the ugliness could be avoided if df had id-column but it's not always available. </p>
  
  <pre><code>key_col = ['col1','col2']
  df_with_idx = df.reset_index()
  common = pd.merge(df_with_idx,other,on=key_col)['index']
  mask = df_with_idx['index'].isin(common)
  
  desired_result =  df_with_idx[~mask].drop('index',axis=1)
  </code></pre>
  
  <p><strong>So maybe there is some more elegant way?</strong></p>