При беге
pd.read_hdf('myfile.h5')
Я получаю следующую ошибку трассировки:
[[...some longer traceback]]
~/.local/lib/python3.6/site-packages/pandas/io/pytables.py in read_array(self, key, start, stop) 2487 2488 if isinstance(node, tables.VLArray): -> 2489 ret = node[0][start:stop] 2490 else: 2491 dtype = getattr(attrs, 'value_type', None)
~/.local/lib/python3.6/site-packages/tables/vlarray.py in getitem(self, key)
~/.local/lib/python3.6/site-packages/tables/vlarray.py in read(self, start, stop, step)
tables/hdf5extension.pyx in tables.hdf5extension.VLArray._read_array()
ValueError: cannot set WRITEABLE flag to True of this array
Понятия не имею, что происходит. Я пробовал переустановить tables, pandas все в основном, но читать не хочет.
Когда я открываю его с помощью h5py, я получаю ключ ['pd']. У этого есть 4 ключа: <KeysViewHDF5 ['axis0', 'axis1', 'block0_items', 'block0_values']>
ptdump выгружает структуру группы и форматы наборов данных в командное окно (или перенаправляет в текстовый файл). Если ошибок нет, это хорошее начало. Вы видели список VLArrays с данными? h5py - это другой метод доступа к данным HDF5. Он использует метод, подобный словарю, где ключи - это имена ваших узлов верхнего уровня, а значения - это объекты (либо группа, либо набор данных). Цель этого - проверить действительный файл HDF5, чтобы вы могли сосредоточиться на своем коде.






Вы используете numpy 1.16? Он несовместим с последней версией pytables (см. https://github.com/PyTables/PyTables/blob/v3.4.4/tables/hdf5extension.pyx#L2155), но команда pytables еще не выпустила фиксированную версию: https://github.com/PyTables/PyTables/issues/719
Я нашел единственный способ исправить это - понизить версию numpy.
Проблема не устранена для меня с numpy 1.15 и python 3.6. Проблема уходит с Python 3.5 или 3.7. Я использую среду анаконды. с каналом conda-forge.
Эта ошибка исчезла с numpy 1.15. Но новая ошибка связана с отсутствием модуля с именем numpy.core._multiarray_umath.
@YueDeng это вероятно потому, что hdf-файл был сохранен с помощью numpy 1.16. В этом случае это не сработает даже после перехода на более раннюю версию. Попробуйте понизить версию numpy и снова сохранить файл hdf с версией 1.15. Тогда все заработает.
И перейти на Python 3.5
Я использую Python 3.6 и обновил pytables до 3.5.1, чтобы все заработало; не пришлось переписывать архив HDF
Кажется, что строки time-date вызывали проблему, и когда я преобразовал их из текста в numpy (pd.to_datetime()) и сохранил таблицу, проблема исчезла, так что, возможно, это как-то связано с текстовыми данными?
Обновление PyTables до версии> 3.5.1 должно решить эту проблему.
pip install --upgrade tables
если вы работаете в Google Colab, не забудьте перезапустить среду выполнения
Можете ли вы открыть
myfile.h5с помощью HDFView и просмотреть данные? Или вы пробовали читать файл с помощью инструментаh5dump? Это утилита командной строки от HDF Group. Это еще один способ увидеть, что у вас есть. Вы также можете попробовать инструмент командной строкиpytablesptdump. Это может помочь выявить проблему.