title: Selecting rows based on boolean mask - why is there a difference in performance?
body: <p>I've been working with pandas DataFrame objects and selecting rows based on column values. 
  I've noticed that if you select rows using <code>.values</code> first then it is about twice as fast. Why is this?
  And is there any reason why you should use the first example if it is slower?</p>
  
  <pre><code>df = pd.DataFrame(np.random.randint(0, high=10, size=(1000, 4)), columns=['A', 'B', 'C', 'D'])
  
  %timeit df_test = df[df['A'] == 9]
  The slowest run took 4.98 times longer than the fastest. This could mean that an intermediate result is being cached.
  1000 loops, best of 3: 363 µs per loop
  
  %timeit df_test = df[df['A'].values == 9]
  1000 loops, best of 3: 181 µs per loop
  </code></pre>