0

初めてread_hdfを使用して、小さな* .h5の束を1つの大きなファイルに結合するために使用したいと考えています。HDFStore の append() を呼び出す予定です。後でメモリを節約するためにチャンクを追加します。

例のテーブルは次のようになります

Int64Index: 220189 エントリ、0 ~ 220188 データ列 (合計 16 列): ID 220189 非 null 値 duration 220189 非 null 値 epochNanos 220189 非 null 値 タグ 220189 非 null 値 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' object has no attribute '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 倍しか購入しません)。したがって、unsigned int を使用するメリットはありません。

最小値 (-9223372036854775807) がNaTNot a Time の整数マーカーを表すために使用されるため、int64 を使用します。

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 に答える