2013-04-23 77 views
2

我有一個my_file.h5文件,據推測,它包含HDF5格式的數據(PyTables)。我嘗試用熊貓來讀取這個文件:如何從熊貓閱讀HDF表?

import pandas as pd 
store = pd.HDFStore('my_file.h5') 

然後我嘗試使用store對象:

print store 

結果我得到:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 133, in __repr__ 
    kind = v._v_attrs.pandas_type 
    File "/usr/lib/python2.7/dist-packages/tables/attributeset.py", line 302, in __getattr__ 
    (name, self._v__nodePath) 
AttributeError: Attribute 'pandas_type' does not exist in node: '/data' 

有誰知道我是什麼我做錯了?問題可能是由於我的*.h5不是我認爲的(不是hdf5格式的數據)而導致的?

回答

3

在你/usr/lib/pymodules/python2.7/pandas/io/pytables.py,線路133

kind = v._v_attrs.pandas_type 

在我pytables.py我看到

kind = getattr(n._v_attrs,'pandas_type',None) 

通過使用getattr,如果沒有pandas_type屬性,然後kind設置爲None。我猜我的版本的熊貓

In [7]: import pandas as pd 

In [8]: pd.__version__ 
Out[8]: '0.10.0' 

是比你更新。如果是這樣,修復方法是升級你的pandas

+0

您將需要至少0.10.1(現在0.11出來),讀取非熊貓創建的HDF5表,您可以執行''ptdump -avd file.h5''來檢查它是順便說一句 – Jeff 2013-04-23 14:41:32

2

我有一個h5表。 pytables獨立於熊貓製作,需要將其轉換爲元組列表,然後將其導入df。這真好,因爲它允許我使用我的pytables索引在輸入上運行「where」。這節省了我讀取所有行。