Pandas: ValueError: не удается установить флаг WRITEABLE в значение True для этого массива

Созданный на 19 янв. 2019  ·  16Комментарии  ·  Источник: pandas-dev/pandas

нужно будет вернуть декоратор xfail в: https://github.com/pandas-dev/pandas/pull/25517, когда это будет исправлено

Пример кода, копируемый пример, если возможно

У меня внезапно появляется эта ошибка, есть идеи?

# Your code here
 input_df = pd.read_hdf(path_or_buf='x.hdf5',key='/x',mode='r')

Описание проблемы

Проследить :
` Traceback (most recent call last): File "...", line 115, in <module> input_df = pd.read_hdf(path_or_buf='x.hdf5',key='/x',mode='r') File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 394, in read_hdf return store.select(key, auto_close=auto_close, **kwargs) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 741, in select return it.get_result() File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 1483, in get_result results = self.func(self.start, self.stop, where) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 734, in func columns=columns) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 2937, in read start=_start, stop=_stop) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 2489, in read_array ret = node[0][start:stop] File "/usr/local/lib/python3.6/dist-packages/tables/vlarray.py", line 681, in __getitem__ return self.read(start, stop, step)[0] File "/usr/local/lib/python3.6/dist-packages/tables/vlarray.py", line 821, in read listarr = self._read_array(start, stop, step) File "tables/hdf5extension.pyx", line 2155, in tables.hdf5extension.VLArray._read_array ValueError: cannot set WRITEABLE flag to True of this array

Bug Dependencies IO HDF5

Самый полезный комментарий

При использовании numpy = 1.16.0 я получаю эту ошибку, когда я понижаю numpy = 1.15.4 проблема исчезла

Все 16 Комментарий

@ macd2 : Спасибо, что сообщили об этом! Пара вещей:

  • В этом вопросе не могли бы вы предоставить информацию о своей среде из pandas.show_versions ?
  • Предполагая, что вы можете, не могли бы вы поделиться файлом, который вызывает эту ошибку?

У меня внезапно появляется эта ошибка, есть идеи?

  • Похоже, это сработало для вас в предыдущих версиях pandas . Когда этот код в последний раз работал у вас? Какую версию вы используете сейчас (по первому вопросу)?

cc @jreback

При использовании numpy = 1.16.0 я получаю эту ошибку, когда я понижаю numpy = 1.15.4 проблема исчезла

@gfyoung Конечно, вот версии:
`` pandas.show_versions
'зависимости':
{'pandas': '0.23.4', 'pytest': '3.4.0', 'pip': '18 .1 ',' setuptools ': '40 .6.3', 'Cython': '0.29.3', ' numpy ':' 1.16.0 ',' scipy ':' 1.2.0 ',' pyarrow ': Нет,' xarray ': Нет,' IPython ':' 6.5.0 ',' sphinx ': Нет,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': нет, 'узкое место': '1.2.1', 'таблицы': '3.4.4' , 'numexpr': '2.6.8', 'перо': нет, 'matplotlib': '3.0.2', 'openpyxl': '2.5.12', 'xlrd': '1.1.0', 'xlwt' : '1.3.0', 'xlsxwriter': '0.7.3', 'lxml': '4.1.1', 'bs4': '4.4.1', 'html5lib': '1.0b8', 'sqlalchemy': '1.2.15', 'pymysql': '0.9.2', 'psycopg2': '2.7.6.1 (dt dec pq3 ext lo64)', 'jinja2': '2.10', 's3fs': Нет, 'fastparquet' : None, 'pandas_gbq': None, 'pandas_datareader': '0.7.0'}

``

к сожалению, я не могу поделиться файлом, но я думаю, что проблемы действительно возникают из-за numpy, поскольку @vvvlc сказал, что это еще одна проблема с их git:

https://github.com/nipy/nibabel/issues/697

PS: just downgraded to numpy=1.15.4 and indeed it resolves the issue

Могут ли панды пока что-нибудь сделать? Или просто подожди следующего
выпуск pytables?

В понедельник, 21 января 2019 г., в 5:34 утра macd2 [email protected] написал:

@gfyoung https://github.com/gfyoung Конечно, вот версии:

'зависимости':
{'pandas': '0.23.4', 'pytest': '3.4.0', 'pip': '18 .1 ',' setuptools ': '40 .6.3', 'Cython': '0.29.3', ' numpy ':' 1.16.0 ',' scipy ':' 1.2.0 ',' pyarrow ': Нет,' xarray ': Нет,' IPython ':' 6.5.0 ',' sphinx ': Нет,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': нет, 'узкое место': '1.2.1', 'таблицы': '3.4.4' , 'numexpr': '2.6.8', 'перо': нет, 'matplotlib': '3.0.2', 'openpyxl': '2.5.12', 'xlrd': '1.1.0', 'xlwt' : '1.3.0', 'xlsxwriter': '0.7.3', 'lxml': '4.1.1', 'bs4': '4.4.1', 'html5lib': '1.0b8', 'sqlalchemy': '1.2.15', 'pymysql': '0.9.2', 'psycopg2': '2.7.6.1 (dt dec pq3 ext lo64)', 'jinja2': '2.10', 's3fs': Нет, 'fastparquet' : None, 'pandas_gbq': None, 'pandas_datareader': '0.7.0'}

к сожалению, я не могу поделиться файлом, но я думаю, что проблемы действительно возникают
из numpy, как сказал @vvvlc https://github.com/vvvlc, вот другой
проблема в их git:

nipy / nibabel # 697 https://github.com/nipy/nibabel/issues/697

-
Вы получаете это, потому что подписаны на эту ветку.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/pandas-dev/pandas/issues/24839#issuecomment-456043488 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/ABQHIqiIyuE-lmMlN2Ep-4htyMrTBdefks5vFaWqgaJpZM4aJQqs
.

Для меня pip install numpy==1.15.4 также решает эту проблему.

@TomAugspurger эта проблема поднимается вверху Google (по крайней мере, для меня это так), и кажется, что решение простое, так что, возможно, достаточно просто дождаться исправления в

pip3 install numpy==1.15.4 тоже решил за меня ..

Однако, когда я понизил numpy, я продолжал получать эту ошибку ImportError: No module named 'numpy.core._multiarray_umath' . Наконец выяснилось, что это происходит, потому что я сохранил файл .h5 с установленным numpy 1.16, и он не открывался повторно с пониженным numpy ...

вы можете избежать ошибки:
ValueError: cannot set WRITEABLE flag to True of this array
передача format='table' в HDFStore.append или HDFStore.put при сохранении данных с помощью pandas.

Это, скорее всего, решит вашу проблему, протестировано с pandas 0.24 и numpy 1.16+

@ dev72
хорошо, но как насчет старых файлов HDF, которые уже существуют?

Я думаю, что лучший способ читать старые файлы hdf - это понизить версию вашей pandas + numpy, прочитать все данные и записать их в новый магазин hdf с помощью format='table' .
Затем он должен работать с более новыми версиями numpy и pandas.

@ dev72 да, верно, я в тот же момент, но я предпочитаю

да, то же самое пришло из Google, спасибо за регистрацию этого вопроса @ macd2

Итак, после изучения нескольких проблем, отправленных в numpy и PyTables этом сообщении @avalentino будет предлагаться, что эта проблема исправлена ​​в PyTables master, но еще не в выпуске.

https://github.com/PyTables/PyTables/issues/719#issuecomment -455612656

Кто-нибудь пробовал использовать PyTables master w / numpy >= 0.16 ?

Я заставил его работать, используя это

HDF5_DIR={HDF5_PATH} pip install -e git+https://github.com/PyTables/PyTables@492ee2f#egg=tables
pip install numpy==1.16.0

Убедитесь, что установлены cython и hdf5.

Какие версии pytables и numpy воспроизводят это? Это относится к данным?

с участием

pandas: 0.24.1
numpy: 1.16.2
tables: 3.4.4

это не поднимает,

In [8]: df = pd.DataFrame({"A": [1, 2]})

In [9]: df.to_hdf('x.hdf5', key='x')

In [10]: pd.read_hdf('x.hdf5', 'x', mode='r')
Out[10]:
   A
0  1
1  2

FYI, pytables 3.5.0 и 3.5.1 находятся на PyPI с исправлением со стороны pytables.

Обновление до pytables 3.5.1 решает проблему для меня также с numpy 1.16.2

для работы с tf 2.0.0 требуется numpy (как минимум) 1.16.0. переход на предыдущую версию numpy не будет работать на tf 2.0.0

Была ли эта страница полезной?
0 / 5 - 0 рейтинги