繁体   English   中英

Python & Pandas - int32 和 int64 之间的 pd.Series 差异

[英]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.2numpy 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM