3

ファイルに保存されているパネルがあり、そのパネルにさらにデータを追加したいのですが、メモリに追加すると正常に機能しますが、ファイルにデータを追加しようとすると、次のエラーが発生します。

import pandas as pd
import numpy as np

df = pd.DataFrame(data = np.random.randn(5,6),columns=('a','b','c','d','e','f'))
pw =  pd.Panel(major_axis = df.columns,minor_axis=df.index)
pw2 = pd.Panel(major_axis = df.columns,minor_axis=df.index)
pw['A'] = df
pw['B'] = df*2
pw['C'] = df*3
pw2['D'] = df*4

pw.to_hdf('proc.h5','proc' , mode='w',format='table',append=True)
pw2.to_hdf('proc.h5','proc' , mode='a',format='table',append=True)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 884, in to_hdf
return pytables.to_hdf(path_or_buf, key, self, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 279, in to_hdf
f(store)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 272, in <lambda>
f = lambda store: store.append(key, value, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 914, in append
**kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 1273, in _write_to_group
s.write(obj=value, append=append, complib=complib, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 3578, in write
**kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 3229, in create_axes
item in items))
ValueError: cannot match existing table structure for [A,B,C] on appending data
4

1 に答える 1

1

パラメータのドキュメントはこちらです。axes

> 2 次元オブジェクト (パネルは 3 次元) を格納すると、オブジェクトがテーブル構造にフラット化されます。ここで (この場合)、major_axisminor_axisはインデックスです。items軸はテーブルの「列」です。

そのため、どのインデックスにも追加が許可されているため、長軸および/または短軸を変更した新しいパネルを追加できます。ただし、アイテム軸は、テーブルが最初に追加されたときに固定されます。

効率を達成するために、PyTables/HDF5 はこの固定次元を必要とします。

必要に応じて、追加する別の軸を指定できます。axes=['items','major_axis']または単にパネルを転置して、必要な形式にします。これは、最初の追加で指定する必要があるパラメーターです。

で作成された構造を表示できますptdump -av <file.h5>

于 2014-05-12T10:19:43.650 に答える