title: Pandas DataFrame iloc spoils the data type
body: <p>Having pandas 0.19.2.</p>
  
  <p>Here's an example:</p>
  
  <pre><code>testdf = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [1.0, 2.0, 3.0, 4.0]})
  testdf.dtypes
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>A      int64
  B    float64
  dtype: object
  </code></pre>
  
  <p>Everything looks fine for now, but what I don't like is that (note, that first call is a <code>pd.Series.iloc</code> and the second one is <code>pd.DataFrame.iloc</code>)</p>
  
  <pre><code>print(type(testdf.A.iloc[0]))
  print(type(testdf.iloc[0].A))
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>&lt;class 'numpy.int64'&gt;
  &lt;class 'numpy.float64'&gt;
  </code></pre>
  
  <p>I found it while trying to understand why <code>pd.DataFrame.join()</code> operation returned almost no intersections of two <code>int64</code> columns while there should be many. 
  My guess is because of type inconsistency which might be connected with this behaviour, but I'm not sure... My short investigation revealed the thing above and now I'm confused a bit.</p>
  
  <p>If someone knows how to solve it - I'll be very grateful for any hints!</p>
  
  <p><strong>UPD</strong></p>
  
  <p>Thanks to @EdChum for comments. So here is the example with my generated data and join/merge behaviour</p>
  
  <p><code>testdf.join(testdf, on='A', rsuffix='3')</code></p>
  
  <pre><code>    A   B   A3  B3 
  0   1   1.0 2.0 2.0
  1   2   2.0 3.0 3.0
  2   3   3.0 4.0 4.0
  3   4   4.0 NaN NaN
  </code></pre>
  
  <p>And what is considered to be quite the same
  <code>pd.merge(left=testdf, right=testdf, on='A')</code>
  returns</p>
  
  <pre><code>    A   B_x B_y
  0   1   1.0 1.0
  1   2   2.0 2.0
  2   3   3.0 3.0
  3   4   4.0 4.0
  </code></pre>
  
  <p><strong>UPD2</strong> Replicating @EdChum comment on <code>join</code> and <code>merge</code> behaviour. The problem is that <code>A.join(B, on='C')</code> will use index in <code>A</code> and join it with column <code>B['C']</code>, since by default join uses index. In my case I just used merge to get desireable result.</p>