2

私はすべてのデータを HDFStore に入れました (そうです!) が、それを取り出す方法..

HDFStore に 6 つの DataFrame を frame_table として保存しました。これらの各テーブルは次のようになりますが、長さは異なります (日付はユリウス日です)。

>>> a = store.select('var1')
>>> a.head()
                      var1
x_coor y_coor date         
928    310    2006257   133
932    400    2006257   236
939    311    2006257   253
941    312    2006257   152
942    283    2006257    68

次に、すべてのテーブルから、日付が 2006256 を超える値を選択します。

>>> b = store.select_as_multiple(['var1','var2','var3','var4','var5','var6'], where=(pd.Term('date','>',date)), selector= 'var1')
>>> b.head()
                      var1   var2  var3  var4  var5  var6
x_coor y_coor date                                        
928    310    2006257   133  14987  7045    18   240   171
              2006273   136      0  7327    30   253   161
              2006289   125      0  -239    83   217   168
              2006305    95  14604  6786    13   215    57
              2006321    84      0  4548    13   133    88

これは機能しますが、比較的小さな .h5 ファイルに対してのみです。したがって、通常の .h5 ファイルについては、チャンクサイズを使用して HDFStore に一時的に保存したいと思います (この選択に基づいて新しい列も追加する必要があるため)。私はこのように考えました(これを使用し):

for df in store.select_as_multiple(['var1','var2','var3','var4','var5','var6'], where=(pd.Term('date','>',date)), selector= 'var1', chunksize=15):
    tempstore.put('test',pd.DataFrame(df))

ただし、ストアに追加されるチャンクは 1 つだけです。ただし、次の場合:

tempstore.append('test',pd.DataFrame(df))

ValueError: Can only append to Tables が表示されます。私が間違っていることは何ですか?

4

1 に答える 1

5

ストアを(最新のチャンクで)上書きし続けてこれを実行しようとするとput、追加するとエラーが発生します(ストア/非テーブルに追加できないため)。

あれは:

  • put単一の追加不可能な固定形式 ( a と呼ばれるstorer) を書き込みます。これは高速に記述できますが、追加もクエリも実行できません (全体を取得するだけです)。

  • appendこれは、ここで必要なtableもの (および a とは何かframe_table) です。

注:既にフレームになっpd.DataFrame(df)ているので、実行する必要はありません。df

したがって、そこにある場合は、最初にこれを実行します(ストアを削除します):

if 'test' in tempstore:
    tempstore.remove('test')

次に、各 DataFrame を追加します。

for df in store.select_as_multiple(.....):
     tempstore.append('test', df)
于 2013-07-11T11:35:32.767 に答える