[英]Python & Pandas - pd.Series difference between int32 and int64
我开始学习 python、numpy 和 panda's,我有一个非常基本的问题,关于大小。
请参阅下一个代码块:
1. 长度:6,数据类型:int64
# create a Series from a dict
pd.Series({key: value for key, value in zip('abcdef', range(6))})
对比
2. 长度:6,数据类型:int32
# but why does this generate a smaller integer size???
pd.Series(range(6), index=list('abcdef'))
问题所以我认为当你在 pd.Series 中放入一个列表、numpy 数组、字典等时,你会得到 int64,但是当你在 pd.Series 中只放入 range(6) 时,你会得到 int32。 有人可以让我清楚一点吗?
对不起,这个非常基本的问题。
@Edit :我使用的是 Pandas 版本 0.20.1 和 Numpy 1.12.1
他们在该语义不同的在第一个版本传递与单个标量值的字典所以D型细胞变得int64
,对于第二,传递一个range
可trvially转换为numpy的阵列,这是int32
:
In[57]:
np.array(range(6)).dtype
Out[57]: dtype('int32')
因此,pandas series
的构建在第一个实例中涉及 dtype 匹配,在第二个实例中没有匹配,因为它可以转换为 numpy 数组,并且 numpy 已确定在这种情况下首选int32
更新
看起来这取决于您的numpy
版本,也可能是pandas
版本。 我正在运行 python 3.6、numpy 1.12.1 和 pandas 0.20.3,我得到了上述结果。 我也在运行 Windows 7 64 位
@jeremycg 正在运行 pandas 0.19.2
和numpy
1.11.2 并观察到相同的结果,而@coldspeed 正在运行numpy
1.13.1 并观察到int64
。
从中得出的结论是dtype
将在很大程度上取决于numpy
作用。
我相信在这种情况下,当我们通过range
时,这条线就是所谓的。
subarr = np.array(arr, dtype=object, copy=copy)
返回的类型由numpy
和 OS 确定,在我的情况下,windows 已将 C Long 定义为 32 位。 请参阅相关: numpy array dtype 在 Windows 10 64 位机器中默认为 int32
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.