Pandas HDFStore - как снова открыть?
Я создал файл, используя:
store = pd.HDFStore('/home/.../data.h5')
и сохранил некоторые таблицы, используя:
store['firstSet'] = df1
store.close()
Я закрыл python и снова открылся в новой среде.
Как повторно открыть этот файл?
Когда я иду:
store = pd.HDFStore('/home/.../data.h5')
Я получаю следующую ошибку.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/io/pytables.py", line 207, in __init__
self.open(mode=mode, warn=False)
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/io/pytables.py", line 302, in open
self.handle = _tables().openFile(self.path, self.mode)
File "/apps/linux/python-2.6.1/lib/python2.6/site-packages/tables/file.py", line 230, in openFile
return File(filename, mode, title, rootUEP, filters, **kwargs)
File "/apps/linux/python-2.6.1/lib/python2.6/site-packages/tables/file.py", line 495, in __init__
self._g_new(filename, mode, **params)
File "hdf5Extension.pyx", line 317, in tables.hdf5Extension.File._g_new (tables/hdf5Extension.c:3039)
tables.exceptions.HDF5ExtError: HDF5 error back trace
File "H5F.c", line 1582, in H5Fopen
unable to open file
File "H5F.c", line 1373, in H5F_open
unable to read superblock
File "H5Fsuper.c", line 334, in H5F_super_read
unable to find file signature
File "H5Fsuper.c", line 155, in H5F_locate_signature
unable to find a valid file signature
End of HDF5 error back trace
Unable to open/create file '/home/.../data.h5'
Что я здесь делаю неправильно? Спасибо.
Ответы
Ответ 1
Вместо этого вы можете попробовать:
store = pd.io.pytables.HDFStore('/home/.../data.h5')
df1 = store['firstSet']
или напрямую используйте метод чтения:
df1 = pd.read_hdf('/home/.../data.h5', 'firstSet')
В любом случае, вы должны иметь pandas 0.12.0 или выше...
Ответ 2
В моих руках лучший подход к работе:
df = pd.DataFrame(...)
"write"
with pd.HDFStore('test.h5', mode='w') as store:
store.append('df', df, data_columns= df.columns, format='table')
"read"
with pd.HDFStore('test.h5', mode='r') as newstore:
df_restored = newstore.select('df')
Ответ 3
У меня была такая же проблема, и, наконец, она была исправлена, установив модуль pytables (рядом с модулями pandas, которые я использовал):
Конда установить pytables
который получил мне numexpr-2.4.3 и pytables-3.2.0
После этого он сработал. Я использую pandas 0.16.2 под python 2.7.9