2015-11-10 15 views
11

h5pyで作成したHDF5形式のファイルを読み込もうとすると、パンダエラーが発生します。私はちょうど何か間違っているのだろうか?パンダはh5pyで作成したhdf5ファイルを読み取れません

import h5py 
import numpy as np 
import pandas as pd 
h5_file = h5py.File('test.h5', 'w') 
h5_file.create_dataset('zeros', data=np.zeros(shape=(3, 5)), dtype='f') 
h5_file.close() 
pd_file = pd.read_hdf('test.h5', 'zeros') 

はエラーを与える: TypeError例外を:オブジェクトが既存のも値が、私はそれを行うだろうと私は「/ゼロ」(にキーセットを指定しようとした

を渡されていない場合に記憶手段を作成することはできませんファイルを読むときにh5pyで)運がない。

私はそれを読むためにpandas.HDFStoreを使用している場合は、私は戻って、空店舗を取得:

store = pd.HDFStore('test.h5') 
>>> store 
<class 'pandas.io.pytables.HDFStore'> 
File path: test.h5 
Empty 

私はh5pyバックだけで作成したファイルを読み込む支障がない:

これらを使用して
h5_back = h5py.File('test.h5', 'r') 
h5_back['/zeros'] 
<HDF5 dataset "zeros": shape (3, 5), type "<f4"> 

バージョン:事前に

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 

pd.__version__ 
'0.16.2' 
h5py.__version__ 
'2.5.0' 

多くのおかげで、 マーシャ

+0

https://github.com/pandas/dev/pandas/issues/9539 –

答えて

9

私はpytablesモジュールを少し使っています。pandas.ioで、パンダとHDAファイルとのやりとりはパンダが理解できる特定の構造に限られています。あなたはHDFViewで「test.h5」を開くと、これらがどのように見えるかを確認するには、あなたが

import pandas as pd 
import numpy as np 
pd.Series(np.zeros((3,5),dtype=np.float32).to_hdf('test.h5','test') 

を試すことができ、あなたはDataFrameを再作成するために必要な4つの項目にパス/testが表示されます。

HDFView of test.h5

だから私は、numpyの配列に読み取るための唯一のオプションは、それらを直接読み込み、その後、パンダオブジェクトにこれらを変換することだと思います。

+0

私はパンダにステッチしたいと思っていましたが、私はh5pyの依存関係を保たなければならないようです。お返事ありがとうございました! –

関連する問題