Pandas: ValueError:この配列のWRITEABLEフラグをTrueに設定できません

作成日 2019年01月19日  ·  16コメント  ·  ソース: pandas-dev/pandas

これが修正されたら、 httpsます

コードサンプル、可能であればコピーして貼り付けることができる例

突然このエラーが発生しました、何か考えはありますか?

# 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'、 'C​​ython': '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」:なし、「bottleneck」:「1.2.1」、「tables」:「3.4.4」 、 'numexpr': '2.6.8'、 'feather':なし、 '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' :なし、 'pandas_gbq':なし、 'pandas_datareader': '0.7.0'}

`` `

残念ながら、私はファイルを共有できませんが、 @ vvvlcがここに彼らのgitの他の問題があると言ったように、問題は確かにnumpyから来ていると思います:

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

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

その間にパンダにできることはありますか? または単に次を待つ
pytablesリリース?

午前5時34分AMの月、2019年1月21日にmacd2 [email protected]書きました:

@gfyoung https://github.com/gfyoung確かにここにバージョンがあります:

「依存関係」:
{'pandas': '0.23.4'、 'pytest': '3.4.0'、 'pip':'18 .1 '、' setuptools ':'40 .6.3'、 'C​​ython': '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」:なし、「bottleneck」:「1.2.1」、「tables」:「3.4.4」 、 'numexpr': '2.6.8'、 'feather':なし、 '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' :なし、 'pandas_gbq':なし、 'pandas_datareader': '0.7.0'}

残念ながら、ファイルを共有することはできませんが、問題は確かに発生すると思います
@vvvlcとしてnumpyから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'発生し続けました。 numpy 1.16がインストールされた状態で.h5ファイルを保存し、ダウングレードされたnumpyで再度開かないため、最終的にそれが発生していることがわかりました...

エラーを回避できます。
ValueError: cannot set WRITEABLE flag to True of this array
パンダでデータを保存するときにformat='table'HDFStore.appendまたはHDFStore.putに渡します。

これはおそらくあなたの問題を解決し、パンダ0.24とnumpy1.16 +でテストされます

@ dev72
わかりましたが、すでに存在する古いHDFファイルはどうですか?

古いhdfファイルを読み取る最良の方法は、pandas + numpyバージョンをダウングレードし、すべてのデータを読み取り、 format='table'して新しいhdfストアに書き込むことだと思います。
その後、新しいnumpyおよびpandasバージョンで動作するはずです。

@ dev72はい、同じ時点で正しいですが、これが適切に修正されるまで、私はむしろダウングレードに固執します

はい、同じことがグーグルから来ました、この問題を提出してくれてありがとう@ macd2

したがって、 numpyPyTables提出されたいくつかの問題を追いかけた後、 @ avalentinoによるこの投稿は、この問題がPyTablesマスターで修正されているが、まだリリースされていないことを示唆しています。

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

PyTablesマスターと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

参考までに、pytables 3.5.0と3.5.1はPyPIにあり、pytables側から修正されています。

pytables 3.5.1にアップグレードすると、numpy1.16.2でも問題が修正されます。

tf 2.0.0を扱うには、(少なくとも)1.16.0が必要です。 numpyを以前のバージョンにダウングレードしてもtf2.0.0では機能しません

このページは役に立ちましたか?
0 / 5 - 0 評価