title: Pandas selection keeping the same shape as original DataFrame
body: <p>I'm trying to select from a DataFrame with multi boolean criteria keeping the original size of DataFrame.</p>
  
  <p>Suppose that i have the follwing DataFrame :</p>
  
  <pre><code>&gt;&gt;&gt; import pandas as pd
  &gt;&gt;&gt; from random import randint
  &gt;&gt;&gt; df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                     'B': [randint(1, 9)*10 for x in xrange(10)],
                     'C': [randint(1, 9)*100 for x in xrange(10)]})
  &gt;&gt;&gt; df
     A   B    C
  0  3  40  100
  1  6  30  200
  2  7  70  800
  3  3  50  200
  4  7  50  400
  5  4  10  400
  6  3  70  500
  7  8  30  200
  8  3  40  800
  9  6  60  200
  </code></pre>
  
  <p>I want to select the values where 10 &lt; B &lt; 70 and C = 200 without changing the DataFrame size.
  I've tried the query function:</p>
  
  <pre><code>df.query('10 &lt; B &lt; 70 and C == 200')
  </code></pre>
  
  <p>and I'm getting this:</p>
  
  <pre><code>   A   B    C
  1  6  30  200
  3  3  50  200
  7  8  30  200
  9  6  60  200
  </code></pre>
  
  <p>but I want this:</p>
  
  <pre><code>   A   B     C
  0  3  40   NaN
  1  6  30   200
  2  7  NaN  NaN
  3  3  50   200
  4  7  50   NaN
  5  4  NaN  NaN
  6  3  NaN  NaN
  7  8  30   200
  8  3  40   NaN
  9  6  60   200
  </code></pre>
  
  <p>I'm aware of df.where function but apparently it's not possible to apply for columns, it works just for all DataFrame.</p>
  
  <p>Thanks in advance.</p>