Pandas: ValueError: لا يمكن تعيين علامة WRITEABLE على True لهذا الصفيف

تم إنشاؤها على ١٩ يناير ٢٠١٩  ·  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 . متى آخر مرة عمل هذا الرمز بالنسبة لك؟ ما هو الإصدار الذي تستخدمه الآن (المتعلق بالسؤال الأول)؟

ccjreback

عند استخدام numpy = 1.16.0 أحصل على هذا الخطأ ، عند الرجوع إلى إصدار سابق numpy = 1.15.4 اختفت المشكلة

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 ': None،' xarray ': None،' IPython ':' 6.5.0 '،' sphinx ': None،' patsy ' : '0.5.0'، 'dateutil': '2.7.5'، 'pytz': '2018.7'، 'blosc': بلا، 'bottleneck': '1.2.1'، 'table': '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"}

""

لسوء الحظ ، لا يمكنني مشاركة الملف ولكني أعتقد أن المشكلات تأتي بالفعل من numpy كما قال vvvlc هنا مشكلة أخرى في بوابةهم:

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 ': None،' xarray ': None،' IPython ':' 6.5.0 '،' sphinx ': None،' patsy ' : '0.5.0'، 'dateutil': '2.7.5'، 'pytz': '2018.7'، 'blosc': بلا، 'bottleneck': '1.2.1'، 'table': '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"}

للأسف لا يمكنني مشاركة الملف ولكن أعتقد أن المشكلات تأتي بالفعل
من numpy كما قال vvvlc https://github.com/vvvlc هنا آخر
قضية على بوابة بهم:

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 حلها أيضًا بالنسبة لي ..

ومع ذلك ، عندما رجعت إلى إصدار أقدم ، ظللت أتلقى هذا الخطأ ImportError: No module named 'numpy.core._multiarray_umath' . اكتشفت أخيرًا أنه كان يحدث لأنني قمت بتخزين ملف .h5 مع تثبيت 1.16 numpy ولن يتم إعادة فتحه باستخدام numpy الذي تم إرجاعه إلى إصدار أقدم ...

يمكنك تجنب الخطأ:
ValueError: cannot set WRITEABLE flag to True of this array
تمرير format='table' إلى HDFStore.append أو HDFStore.put عند حفظ البيانات باستخدام الباندا.

من المحتمل أن يحل هذا مشكلتك ، تم اختباره باستخدام الباندا 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 يحتاج إلى عدد (على الأقل) 1.16.0. لن يعمل الرجوع إلى إصدار سابق numpy إلى الإصدار السابق على tf 2.0.0

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات