首次使用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
答案 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年纳秒级别的时间表