HDFStore错误'正确的原子类型 - > [dtype-> UINT64'

时间:2013-05-07 17:37:57

标签: pandas pytables

首次使用read_hdf喜欢它想用它将一堆较小的* .h5组合成一个大文件。计划调用HDFStore的append()。稍后将添加分块以节省内存。

示例表如下所示

Int64Index:220189条目,0到220188 数据列(共16列): ID 220189非空值 持续时间220189非空值 epochNanos 220189非空值 标记220189非空值 dtypes:object(1),uint64(3)

代码:

import pandas as pd
print pd.__version__  # I am running 0.11.0
dest_h5f = pd.HDFStore('c:\\t3_combo.h5',complevel=9)
df = pd.read_hdf('\\t3\\t3_20130319.h5', 't3', mode = 'r')
print df
dest_h5f.append(tbl, df, data_columns=True)
dest_h5f.close()

问题:追加捕获此异常 例外:找不到正确的原子类型 - > [dtype-> uint64,items-> Index([InstrumentID],dtype = object)]'module'对象没有属性'Uint64Col'

这对某些版本的pytables或numpy感觉有点问题 pytables = v 2.4.0 numpy = v 1.6.2

1 个答案:

答案 0 :(得分:0)

我们通常将epcoch秒表示为int64并使用datetime64[ns]。尝试使用datetime64[ns],会让您的生活更轻松。无论如何,自1970年以来的纳秒,无论如何都在in64的范围内。 (而uint64只买2倍这个范围)。因此,使用无符号整数没有真正的优势。

我们使用int64,因为最小值(-9223372036854775807)用于表示NaT或非整数时间的整数标记

In [11]: (Series([Timestamp('20130501')])-
                Series([Timestamp('19700101')]))[0].astype('int64')
Out[11]: 1367366400000000000

In [12]: np.iinfo('int64').max
Out[12]: 9223372036854775807

然后,您可以表示关于1677年至2264年纳秒级别的时间表