让我从示例代码开始:
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())
Run Code Online (Sandbox Code Playgroud)
在我的本地计算机和其他开发人员的计算机上,这可以按预期工作并打印出来:
0 4986289
1 536385600
2 1901657664
Name: nums, dtype: int64
2443029553
Run Code Online (Sandbox Code Playgroud)
但是,在我们的生产服务器上,我们得到:
0 4986289
1 536385600
2 1901657664
Name: nums, dtype: int64
-1851937743
Run Code Online (Sandbox Code Playgroud)
这是32位整数溢出,尽管它是一个int64.
生产服务器使用python,numpy的,熊猫等相同版本这是一个64-bit Windows Server 2012OS,一切报道64位(例如python --version,sys.maxsize,plastform.architecture).
什么可能导致这个?