Pandas: ValueError: impossible de définir l'indicateur WRITEABLE sur True de ce tableau

Créé le 19 janv. 2019  ·  16Commentaires  ·  Source: pandas-dev/pandas

devra rétablir le décorateur xfail dans: https://github.com/pandas-dev/pandas/pull/25517 lorsque cela sera corrigé

Exemple de code, un exemple copiable si possible

Je reçois tout d'un coup cette erreur, une idée?

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

Description du problème

Traceback:
` 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

Commentaire le plus utile

Lorsque j'utilise numpy = 1.16.0 j'obtiens cette erreur, lorsque je rétrograde numpy = 1.15.4, le problème est parti

Tous les 16 commentaires

@ macd2 : Merci d'avoir signalé cela! Un certain nombre de choses:

  • Dans le numéro, pourriez-vous fournir des informations sur votre environnement à partir de pandas.show_versions ?
  • En supposant que vous le puissiez, cela vous dérange-t-il de partager le fichier qui déclenche cette erreur?

Je reçois tout d'un coup cette erreur, une idée?

  • Il semble que cela fonctionnait pour vous sur une version précédente de pandas . Quand ce code a-t-il fonctionné pour la dernière fois? Quelle version utilisez-vous actuellement (liée à la première question)?

cc @jreback

Lorsque j'utilise numpy = 1.16.0 j'obtiens cette erreur, lorsque je rétrograde numpy = 1.15.4, le problème est parti

@gfyoung Bien sûr, voici les versions:
`` pandas.show_versions
'dépendances':
{'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 ': Aucun,' xarray ': Aucun,' IPython ':' 6.5.0 ',' sphinx ': Aucun,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': None, 'bottleneck': '1.2.1', 'tables': '3.4.4' , 'numexpr': '2.6.8', 'feather': Aucun, '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': Aucun, 'fastparquet' : Aucun, 'pandas_gbq': Aucun, 'pandas_datareader': '0.7.0'}

''

Malheureusement, je ne peux pas partager le fichier mais je pense que les problèmes viennent en effet de numpy, comme @vvvlc l'a dit, voici un autre problème sur leur git:

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

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

Y a-t-il quelque chose que les pandas peuvent faire en attendant? Ou attendez juste le prochain
publication de pytables?

Le lundi 21 janvier 2019 à 5 h 34, macd2 [email protected] a écrit:

@gfyoung https://github.com/gfyoung Bien sûr, voici les versions:

'dépendances':
{'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 ': Aucun,' xarray ': Aucun,' IPython ':' 6.5.0 ',' sphinx ': Aucun,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': None, 'bottleneck': '1.2.1', 'tables': '3.4.4' , 'numexpr': '2.6.8', 'feather': Aucun, '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': Aucun, 'fastparquet' : Aucun, 'pandas_gbq': Aucun, 'pandas_datareader': '0.7.0'}

malheureusement, je ne peux pas partager le fichier mais je pense que les problèmes viennent en effet
de numpy comme @vvvlc https://github.com/vvvlc dit voici un autre
problème sur leur git:

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

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/pandas-dev/pandas/issues/24839#issuecomment-456043488 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ABQHIqiIyuE-lmMlN2Ep-4htyMrTBdefks5vFaWqgaJpZM4aJQqs
.

Pour moi, pip install numpy==1.15.4 résout également ce problème.

@TomAugspurger, ce problème survient sur Google en tête (du moins pour moi) et il semble que le remède soit simple, alors peut-être suffit-il d'attendre un correctif en amont. Vraiment génial que vous demanderiez :)

pip3 install numpy==1.15.4 également résolu pour moi.

Cependant, lorsque j'ai rétrogradé numpy, j'ai continué à recevoir cette erreur ImportError: No module named 'numpy.core._multiarray_umath' . J'ai finalement compris que cela se produisait parce que j'avais stocké le fichier .h5 avec numpy 1.16 installé et qu'il ne rouvrirait pas avec le numpy rétrogradé ...

vous pouvez éviter l'erreur:
ValueError: cannot set WRITEABLE flag to True of this array
en passant format='table' à HDFStore.append ou HDFStore.put lorsque vous enregistrez des données avec des pandas.

Cela résoudra probablement votre problème, testé avec pandas 0.24 et numpy 1.16+

@ dev72
ok mais qu'en est-il des anciens fichiers HDF qui existent déjà?

Je pense que la meilleure façon de lire les anciens fichiers hdf est de rétrograder votre version pandas + numpy, de lire toutes les données et de les écrire dans un nouveau magasin hdf avec format='table' .
Ensuite, cela devrait fonctionner avec les nouvelles versions de numpy et pandas.

@ dev72 oui, je

oui, la même chose est venue de google, merci d'avoir signalé ce problème

Donc, après avoir parcouru quelques problèmes soumis à numpy et PyTables cet article de @avalentino suggérerait que ce problème est résolu dans PyTables master mais pas encore dans une version.

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

Quelqu'un a-t-il essayé d'utiliser PyTables master w / numpy >= 0.16 ?

Je l'ai fait fonctionner en utilisant ça

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

Assurez-vous que cython et hdf5 sont installés.

Quelles versions de pytables et numpy reproduisent cela? Est-ce spécifique aux données?

avec

pandas: 0.24.1
numpy: 1.16.2
tables: 3.4.4

cela ne soulève pas,

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

Pour info, pytables 3.5.0 et 3.5.1 sont sur PyPI avec le correctif du côté pytables.

La mise à niveau vers pytables 3.5.1 résout le problème pour moi également avec numpy 1.16.2

traitant de tf 2.0.0 besoin de numpy (au moins) 1.16.0. la rétrogradation de numpy vers la version précédente ne fonctionnera pas sur tf 2.0.0

Cette page vous a été utile?
0 / 5 - 0 notes