Pandas: ValueError: Das WRITEABLE-Flag dieses Arrays kann nicht auf True gesetzt werden

Erstellt am 19. Jan. 2019  ·  16Kommentare  ·  Quelle: pandas-dev/pandas

Der xfail-Dekorator muss in https://github.com/pandas-dev/pandas/pull/25517 zurückgesetzt werden, wenn dies behoben ist

Codebeispiel, wenn möglich ein kopierfähiges Beispiel

Ich bekomme plötzlich diesen Fehler, eine Idee?

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

Problembeschreibung

Zurück verfolgen :
` 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

Hilfreichster Kommentar

Bei Verwendung von numpy = 1.16.0 wird dieser Fehler angezeigt, beim Downgrade von numpy = 1.15.4 ist das Problem behoben

Alle 16 Kommentare

@ macd2 : Danke, dass hast ! Ein paar Dinge:

  • Können Sie in der Ausgabe Ihre Umgebungsinformationen von pandas.show_versions angeben?
  • Wenn Sie dies können, macht es Ihnen etwas aus, die Datei freizugeben, die diesen Fehler auslöst?

Ich bekomme plötzlich diesen Fehler, eine Idee?

  • Es hört sich so an, als hätte dies bei früheren Versionen von pandas für Sie funktioniert. Wann hat dieser Code zuletzt für Sie funktioniert? Welche Version verwenden Sie gerade (bezogen auf die erste Frage)?

cc @jreback

Bei Verwendung von numpy = 1.16.0 wird dieser Fehler angezeigt, beim Downgrade von numpy = 1.15.4 ist das Problem behoben

@gfyoung Sicher, hier sind die Versionen:
`` `pandas.show_versions
'Abhängigkeiten':
{'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 ': Keine,' xarray ': Keine,' IPython ':' 6.5.0 ',' sphinx ': Keine,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Keine, 'Engpass': '1.2.1', 'Tabellen': '3.4.4' , 'numexpr': '2.6.8', 'fed': Keine, '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': Keine, 'fastparquet' : Keine, 'pandas_gbq': Keine, 'pandas_datareader': '0.7.0'}

`` `

Leider kann ich die Datei nicht teilen, aber ich denke, die Probleme kommen tatsächlich von numpy, wie @vvvlc sagte, hier ist ein anderes Problem auf ihrem Git:

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

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

Können Pandas in der Zwischenzeit etwas tun? Oder warten Sie einfach auf den nächsten
pytables freigeben?

Am Montag, den 21. Januar 2019 um 05:34 Uhr schrieb macd2 [email protected] :

@gfyoung https://github.com/gfyoung Sicher, hier sind die Versionen:

'Abhängigkeiten':
{'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 ': Keine,' xarray ': Keine,' IPython ':' 6.5.0 ',' sphinx ': Keine,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Keine, 'Engpass': '1.2.1', 'Tabellen': '3.4.4' , 'numexpr': '2.6.8', 'fed': Keine, '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': Keine, 'fastparquet' : Keine, 'pandas_gbq': Keine, 'pandas_datareader': '0.7.0'}

Leider kann ich die Datei nicht teilen, aber ich denke, die Probleme kommen tatsächlich
von numpy als @vvvlc https://github.com/vvvlc sagte, hier ist eine andere
Problem auf ihrem Git:

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

- -
Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/pandas-dev/pandas/issues/24839#issuecomment-456043488 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/ABQHIqiIyuE-lmMlN2Ep-4htyMrTBdefks5vFaWqgaJpZM4aJQqs
.

Für mich löst pip install numpy==1.15.4 auch dieses Problem.

@ TomAugspurger Dieses Problem tritt bei Google ganz oben auf (zumindest für mich) und es scheint, dass das Mittel einfach ist. Vielleicht reicht es also aus, nur auf eine vorgelagerte Lösung zu warten. Wirklich toll, dass du fragen würdest :)

pip3 install numpy==1.15.4 auch für mich gelöst ..

Als ich jedoch numpy herabgestuft habe, bekam ich immer wieder den Fehler ImportError: No module named 'numpy.core._multiarray_umath' . Endlich habe ich herausgefunden, dass es passiert ist, weil ich die .h5-Datei mit installiertem numpy 1.16 gespeichert habe und sie mit dem herabgestuften numpy nicht wieder geöffnet werden würde ...

Sie können den Fehler vermeiden:
ValueError: cannot set WRITEABLE flag to True of this array
Übergeben von format='table' an HDFStore.append oder HDFStore.put wenn Sie Daten mit Pandas speichern.

Dies wird wahrscheinlich Ihr Problem lösen, getestet mit Pandas 0.24 und Numpy 1.16+

@ dev72
ok aber wie wäre es mit alten HDF-Dateien, die bereits existieren?

Ich denke, der beste Weg, alte HDF-Dateien zu lesen, besteht darin, Ihre Pandas + Numpy-Version herunterzustufen, alle Daten zu lesen und sie in einen neuen HDF-Speicher mit format='table' schreiben.
Dann sollte es mit neueren Numpy- und Pandas-Versionen funktionieren.

@ dev72 ja richtig bleibe ich lieber beim Downgrade, bis dies richtig behoben ist

Ja, das gleiche kam von Google. Vielen Dank, dass Sie dieses Problem

Nachdem wir ein paar Probleme verfolgt haben, die bei numpy und PyTables eingereicht wurden, würde dieser Beitrag von PyTables master behoben ist, aber noch nicht in einer Veröffentlichung.

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

Hat jemand versucht, PyTables master mit numpy >= 0.16 ?

Ich habe es damit zum Laufen gebracht

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

Stellen Sie sicher, dass cython und hdf5 installiert sind.

Welche Versionen von pytables und numpy reproduzieren dies? Ist es spezifisch für die Daten?

mit

pandas: 0.24.1
numpy: 1.16.2
tables: 3.4.4

das erhöht nicht,

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

Zu Ihrer Information, Pytables 3.5.0 und 3.5.1 befinden sich auf PyPI mit dem Fix von der Pytables-Seite.

Ein Upgrade auf pytables 3.5.1 behebt das Problem für mich auch mit numpy 1.16.2

Umgang mit tf 2.0.0 benötigen numpy (mindestens) 1.16.0. Ein Downgrade von numpy auf die vorherige Version funktioniert unter tf 2.0.0 nicht

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen