【发布时间】:2012-11-13 02:36:42
【问题描述】:
我正在尝试在 Pandas 数据框中插入长整数
import numpy as np
from pandas import DataFrame
data_scores = [(6311132704823138710, 273), (2685045978526272070, 23), (8921811264899370420, 45), (17019687244989530680L, 270), (9930107427299601010L, 273)]
dtype = [('uid', 'u8'), ('score', 'u8')]
data = np.zeros((len(data_scores),),dtype=dtype)
data[:] = data_scores
df_crawls = DataFrame(data)
print df_crawls.head()
但是当我查看数据框时,最后一个很长的值现在是负数:
uid分数 0 6311132704823138710 273 1 2685045978526272070 23 2 8921811264899370420 45 3 -1427056828720020936 270 4 -8516636646409950606 273uid 是 64 位无符号整数,所以 'u8' 应该是正确的 dtype 吗?有什么想法吗?
【问题讨论】:
-
似乎溢出了。尝试“更大”的数据类型怎么样?
-
使用 u16 : TypeError: 数据类型不理解
-
你的 np-data 看起来很好,错误表明 pandas 错过了
u并给你一个有符号的长而不是无符号的。 -
我最好的猜测是,numpy 可能会保留数组中每个元素所需的位数,而 pandas 可能使用 c,在这种情况下,例如 a 的大小。长期依赖于您的系统架构(32 位与 64 位)。所以简而言之,问题可能是在 32 位计算机上运行您的代码。