2014-05-12 3 views
3

파일에 패널이 저장되어 있고 해당 패널에 데이터를 더 추가하려고합니다. 메모리에 추가하면 제대로 작동하지만 데이터를 추가하려고하면 나는이 오류 파일 :HDFStore 파일에 저장된 패널에 데이터를 추가하는 방법

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 

답변

1

문서가 axes 매개 변수에 대한 here입니다.

> 2 개의 희미한 객체 (패널이 3 개의 희미 함)를 저장하면 객체가 테이블 구조로 평평하게됩니다. 여기서는 (이 경우) major_axisminor_axis이 색인입니다. items 축은 테이블의 '열'입니다.

따라서 모든 인덱스에서 추가가 허용되므로 주 및/또는 보조 축이 변경된 새 패널을 추가 할 수 있습니다. 그러나 항목 축은 테이블이 처음 추가 될 때 고정됩니다.

효율성을 높이기 위해 PyTables/HDF5에는이 고정 된 치수가 필요합니다.

원하는 경우 다른 축을 지정하여 예를 들어 추가 할 수 있습니다. axes=['items','major_axis'] 또는 단순히 패널을 원하는 형식으로 가져 오도록 조 변경하십시오. 이 매개 변수는 첫 번째에 지정해야합니다.

ptdump -av <file.h5>으로 만든 구조를 볼 수 있습니다.

관련 문제