title: pandas dataframe.where misbehaving
body: <p>I'm trying to implement a function that returns the max at each position of a dataframe or series, minimizing NaN.</p>
  
  <pre><code>In [217]: a
  Out[217]: 
     0  1
  0  4  1
  1  6  0
  
  [2 rows x 2 columns]
  
  In [218]: b
  Out[218]: 
      0   1
  0 NaN   3
  1   3 NaN
  
  [2 rows x 2 columns]
  
  
  In [219]: do_not_replace = b.isnull() | (a &gt; b)
  
  In [220]: do_not_replace
  Out[220]: 
        0      1
  0  True  False
  1  True   True
  
  [2 rows x 2 columns]
  
  
  In [221]: a.where(do_not_replace, b)
  Out[221]: 
     0  1
  0  4  3
  1  1  0
  
  [2 rows x 2 columns]
  
  
  In [222]: expected
  Out[222]: 
     0  1
  0  4  3
  1  6  0
  
  [2 rows x 2 columns]
  
  In [223]: pd.__version__
  Out[223]: '0.13.1'
  </code></pre>
  
  <p>I imagine there are other ways to implement this function, but I'm unable to figure out this behavior. I mean, where is that 1 coming from? I think the logic is sound. Am I misinterpreting how the function works?</p>