title: Why NaNs when creating a dataframe with pd.Dataframe() and setting the index manually?
body: <p>Let's consider this dataframe:</p>
  
  <pre><code>df = pd.DataFrame(np.random.rand(4,4), columns = ['A', 'B', 'AB', 'O'])
  df
  
  Out[1]:
          A           B          AB           O
  0   0.704744    0.032988    0.514788    0.405281
  1   0.978119    0.354312    0.273255    0.908691
  2   0.653161    0.337653    0.309225    0.008059
  3   0.023022    0.110995    0.751048    0.088853
  </code></pre>
  
  <p>Now let's say we want to select two columns, and use another column as an index. We can use <code>set_index()</code> and get it done easily, but let's try a more cumbersome approach, and use <code>pd.DataFrame()</code>:</p>
  
  <pre><code>pd.DataFrame(df[['B','AB']], index = df['A'].values)
  
  Out[2]:
               B  AB
  0.704744    NaN NaN
  0.978119    NaN NaN
  0.653161    NaN NaN
  0.023022    NaN NaN
  </code></pre>
  
  <p>Why this resulted in <code>NaN</code> values?</p>
  
  <p>The same problem arises if I pass a list of integers as index (example <code>index = [10,11,12,13]</code>). </p>
  
  <p>We can fix this problem quite easily by passing the data as a <code>numpy.ndarray</code> with <code>df[['B','AB']].values</code>. No <code>NaN</code> values will be displayed this way.</p>
  
  <p>Also, no <code>NaN</code> values are displayed with <code>pd.DataFrame(df[['B','AB']])</code> where the index is not specified anymore.</p>
  
  <p>But, again, why the <code>NaN</code> values for the code above?</p>