0

第一次使用 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 的问题

4

1 回答 1

0

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

我们使用 int64 是因为最小值 (-9223372036854775807) 用于表示NaTNot a Time 或整数标记

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 年的时间形式

于 2013-05-07T21:44:32.420 回答