Pandas: ValueError: no se puede establecer el indicador WRITEABLE en True de esta matriz

Creado en 19 ene. 2019  ·  16Comentarios  ·  Fuente: pandas-dev/pandas

deberá revertir el decorador xfail en: https://github.com/pandas-dev/pandas/pull/25517 cuando esto esté arreglado

Ejemplo de código, un ejemplo que se puede copiar, si es posible

De repente recibo este error, ¿alguna idea?

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

Descripción del problema

Rastrear :
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

Comentario más útil

Cuando uso numpy = 1.16.0 obtengo este error, cuando degrado numpy = 1.15.4 el problema se ha ido

Todos 16 comentarios

@ macd2 : ¡Gracias por informar de esto! Un par de cosas:

  • En el problema, ¿podría proporcionar la información de su entorno desde pandas.show_versions ?
  • Suponiendo que pueda, ¿le importaría compartir el archivo que desencadena este error?

De repente recibo este error, ¿alguna idea?

  • Parece que esto le estaba funcionando en versiones anteriores de pandas . ¿Cuándo te funcionó este código por última vez? ¿Qué versión estás usando ahora (relacionada con la primera pregunta)?

cc @jreback

Cuando uso numpy = 1.16.0 obtengo este error, cuando degrado numpy = 1.15.4 el problema se ha ido

@gfyoung Seguro que aquí están las versiones:
`` pandas.show_versions
'dependencias':
{'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 ': Ninguno,' xarray ': Ninguno,' IPython ':' 6.5.0 ',' sphinx ': Ninguno,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Ninguno, 'cuello de botella': '1.2.1', 'tablas': '3.4.4' , 'numexpr': '2.6.8', 'pluma': Ninguno, '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': Ninguno, 'fastparquet' : Ninguno, 'pandas_gbq': Ninguno, 'pandas_datareader': '0.7.0'}

''

Desafortunadamente, no puedo compartir el archivo, pero creo que los problemas provienen de numpy, como dijo @vvvlc , aquí hay otro problema en su git:

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

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

¿Hay algo que los pandas puedan hacer mientras tanto? O simplemente espera al siguiente
lanzamiento de pytables?

El lunes, 21 de enero de 2019 a las 5:34 a.m., macd2 [email protected] escribió:

@gfyoung https://github.com/gfyoung Seguro que aquí están las versiones:

'dependencias':
{'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 ': Ninguno,' xarray ': Ninguno,' IPython ':' 6.5.0 ',' sphinx ': Ninguno,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Ninguno, 'cuello de botella': '1.2.1', 'tablas': '3.4.4' , 'numexpr': '2.6.8', 'pluma': Ninguno, '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': Ninguno, 'fastparquet' : Ninguno, 'pandas_gbq': Ninguno, 'pandas_datareader': '0.7.0'}

Desafortunadamente, no puedo compartir el archivo, pero creo que los problemas vienen
de numpy como @vvvlc https://github.com/vvvlc dijo que aquí hay otro
problema en su git:

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

-
Recibes esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/pandas-dev/pandas/issues/24839#issuecomment-456043488 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ABQHIqiIyuE-lmMlN2Ep-4htyMrTBdefks5vFaWqgaJpZM4aJQqs
.

Para mí, pip install numpy==1.15.4 también resuelve este problema.

@TomAugspurger, este problema aparece en Google en la parte superior (al menos para mí lo hizo) y parece que el remedio es simple, por lo que tal vez sea suficiente con esperar una solución ascendente. Realmente genial que preguntes :)

pip3 install numpy==1.15.4 también me resolvió ...

Sin embargo, cuando bajé la calificación de numpy, seguí recibiendo este error ImportError: No module named 'numpy.core._multiarray_umath' . Finalmente descubrí que estaba sucediendo porque almacené el archivo .h5 con numpy 1.16 instalado y no se volvería a abrir con el numpy degradado ...

puedes evitar el error:
ValueError: cannot set WRITEABLE flag to True of this array
pasando format='table' a HDFStore.append o HDFStore.put cuando guarda datos con pandas.

Esto probablemente resolverá su problema, probado con pandas 0.24 y numpy 1.16+

@ dev72
ok, pero ¿qué hay de los archivos HDF antiguos que ya existen?

Creo que la mejor manera de leer archivos hdf antiguos es degradar su versión pandas + numpy, leer todos los datos y escribirlos en una nueva tienda hdf con format='table' .
Entonces debería funcionar con las versiones más nuevas de numpy y pandas.

@ dev72 sí, estoy en el mismo punto, pero prefiero seguir con la degradación hasta que esto se solucione correctamente

sí, lo mismo vino de google, gracias por presentar este problema @ macd2

Entonces, después de perseguir algunos problemas enviados en numpy y PyTables esta publicación de @avalentino sugeriría que este problema se solucionó en PyTables master pero aún no en un lanzamiento.

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

¿Alguien ha intentado usar PyTables master w / numpy >= 0.16 ?

Lo hice funcionar usando esto

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

Asegúrese de que cython y hdf5 estén instalados.

¿Qué versiones de pytables y numpy reproducen esto? ¿Es específico de los datos?

con

pandas: 0.24.1
numpy: 1.16.2
tables: 3.4.4

esto no sube,

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

Para su información, pytables 3.5.0 y 3.5.1 están en PyPI con la solución del lado de pytables.

La actualización a pytables 3.5.1 me soluciona el problema también con numpy 1.16.2

lidiar con tf 2.0.0 necesita numpy (al menos) 1.16.0. la degradación de numpy a la versión anterior no funcionará en tf 2.0.0

¿Fue útil esta página
0 / 5 - 0 calificaciones