title: Invert bitwise operation on dataframe's columns
body: <p>I am experiencing an unexpected behaviour on panda dataframe. Maybe someone can explain it to me.</p>
  
  <p>I want to select a row based on multiple conditions happening simultaneously. 
  Example:</p>
  
  <pre><code>import pandas as pd
  data = {'a': [1, 2, 1, 2], 'b': [5, 6, 7, 8]} 
  d = pd.DataFrame(data)
  
     a  b
  0  1  5
  1  2  6
  2  1  7
  3  2  8
  
  d[(d['a']==1) &amp; (d['b']==5)]
  </code></pre>
  
  <p>This works as expected and returns </p>
  
  <pre><code>   a  b
  0  1  5
  </code></pre>
  
  <p>However, the exclusion version does not work.</p>
  
  <pre><code>d[(d['a']!=1) &amp; (d['b']!=5)]
  
     a  b
  1  2  6
  3  2  8
  </code></pre>
  
  <p>Whereas as I would obviously expect </p>
  
  <pre><code>   a  b
  1  2  6
  2  1  7
  3  2  8
  </code></pre>
  
  <p>What's going on here and how do I solve it?</p>