pd.read_hdf引发“无法将此数组的WRITABLE标志设置为True”

时间:2019-01-16 03:37:17

标签: python pandas pytables hdf

运行时

pd.read_hdf('myfile.h5')

我收到以下回溯错误:

  

[[...更长的回溯时间]]

     

〜/ .local / lib / python3.6 / site-packages / pandas / io / pytables.py在   read_array(self,key,start,stop)2487 2488如果   isinstance(节点,表.VLArray):   -> 2489 ret =节点[0] [开始:停止] 2490否则:2491 dtype = getattr(attrs,'value_type',None)

     

〜/ .local / lib / python3.6 / site-packages / tables / vlarray.py在    getitem ((自身,密钥)

     

〜/ .local / lib / python3.6 / site-packages / tables / vlarray.py in read(self,   开始,停止,执行步骤

     table.hdf5extension.VLArray._read_array()中的

tables / hdf5extension.pyx

     

ValueError:无法将此数组的WRITEABLE标志设置为True

不知道发生了什么。我试过基本上重新安装tablespandas的所有内容,但不想阅读。

3 个答案:

答案 0 :(得分:12)

您使用的是numpy 1.16吗?它与最新版本的pytables不兼容(请参阅https://github.com/PyTables/PyTables/blob/v3.4.4/tables/hdf5extension.pyx#L2155),但pytables团队尚未发布固定版本:https://github.com/PyTables/PyTables/issues/719

我发现解决此问题的唯一方法是降级numpy。

答案 1 :(得分:1)

将PyTables升级到版本3.5.1应该可以解决此问题。

pip install --upgrade tables

答案 2 :(得分:0)

似乎是time-date字符串引起了问题,当我将它们从文本转换为numpy (pd.to_datetime())并存储了表后,问题消失了,所以也许与文本数据有关吗?