问题
When running
pd.read_hdf('myfile.h5')
I get the following traceback error:
[[...some longer traceback]]
~/.local/lib/python3.6/site-packages/pandas/io/pytables.py in read_array(self, key, start, stop) 2487 2488 if isinstance(node, tables.VLArray): -> 2489 ret = node[0][start:stop] 2490 else: 2491 dtype = getattr(attrs, 'value_type', None)
~/.local/lib/python3.6/site-packages/tables/vlarray.py in getitem(self, key)
~/.local/lib/python3.6/site-packages/tables/vlarray.py in read(self, start, stop, step)
tables/hdf5extension.pyx in tables.hdf5extension.VLArray._read_array()
ValueError: cannot set WRITEABLE flag to True of this array
No clue what's going on. I've tried reinstalling tables
, pandas
everything basically, but doesn't want to read it.
回答1:
Are you using numpy 1.16? It is incompatible with the latest release of pytables (see https://github.com/PyTables/PyTables/blob/v3.4.4/tables/hdf5extension.pyx#L2155) but the pytables team have not yet released a fixed version: https://github.com/PyTables/PyTables/issues/719
The only way I found to fix this is to downgrade numpy.
回答2:
It seems that time-date
strings were causing the problem and when I converted these from text to numpy (pd.to_datetime())
and stored the table and the problem went away so perhaps it has something to do with text data?
来源:https://stackoverflow.com/questions/54210073/pd-read-hdf-throws-cannot-set-writable-flag-to-true-of-this-array