title: Unexpected 32-bit integer overflow in pandas/numpy int64 (python 3.6)
body: <p>Let me start with the example code:</p>
  
  <pre><code>import numpy
  from pandas import DataFrame
  
  a = DataFrame({"nums": [2233, -23160, -43608]})
  
  a.nums = numpy.int64(a.nums)
  
  print(a.nums ** 2)
  print((a.nums ** 2).sum())
  </code></pre>
  
  <p>On my local machine, and other devs' machines, this works as expected and prints out:</p>
  
  <pre><code>0       4986289
  1     536385600
  2    1901657664
  Name: nums, dtype: int64
  2443029553
  </code></pre>
  
  <p>However, on our production server, we get:</p>
  
  <pre><code>0       4986289
  1     536385600
  2    1901657664
  Name: nums, dtype: int64
  -1851937743
  </code></pre>
  
  <p>Which is 32-bit integer overflow, despite it being an int64.</p>
  
  <p>The production server is using the same versions of python, numpy, pandas, etc. It's a <code>64-bit Windows Server 2012</code> OS and everything reports 64-bit (e.g. <code>python --version</code>, <code>sys.maxsize</code>, <code>plastform.architecture</code>).</p>
  
  <p>What could possibly be causing this?</p>