Pandas输入/输出错误?

时间:2013-07-03 17:52:54

标签: pandas

我创建了一个multiindex .h5文件,并使用HDFStore存储数据。但是,当我尝试从文件中读取数据帧时,我发现我可以成功读取一些数据帧但无法读取其他数据帧。以下是我收到的错误消息:

HDF5-DIAG:在HDF5(1.8.9)线程0中检测到错误:   #000:H5Dio.c在H5Dread()中的第174行:无法读取数据     专业:数据集     minor:读取失败

#001:H5D_.c行中的H5Dio.c行449:无法读取数据     专业:数据集     minor:读取失败

#002:H5D_contig_read()中的H5Dcontig.c第560行:连续读取失败     专业:数据集     minor:读取失败

#003:H5D_select_read()中的H5Dselect.c第275行:读取错误     专业:数据空间     minor:读取失败

#004:H5D_select_io()中的H5Dselect.c第210行:读取错误     专业:数据空间     minor:读取失败

#005:H5D_contig.c中的H5Dcontig.c行890():无法执行矢量化筛选缓冲读取     专业:数据集     minor:无法操作对象

#006:H5V_opvv()中的H5V.c第1457行:无法执行操作     major:内部错误(对于详细文档来说太具体了)     minor:无法操作对象

#007:H5D_contig.c中的H5Dcontig.c第691行第691行:块读取失败     专业:数据集     minor:读取失败

#008:H5Fio.c中的H5Fio.c第113行:读取元数据累加器失败     专业:低级I / O.     minor:读取失败

#009:H5F_accum_read()中的H5Faccum.c第254行:驱动程序读取请求失败     专业:低级I / O.     minor:读取失败

#010:H5FD_read()中的H5FDint.c第142行:驱动程序读取请求失败     专业:虚拟文件层     minor:读取失败

#011:H5FDsec2.c第753行H5FD_sec2_read():文件读取失败:时间=周三7月3日14:07:31

,filename ='N.h5',文件描述符= 3,错误号= 5,错误消息='输入/输出错误',buf = 0x7f8807fccb6c,大小= 649492,偏移= 185876480

major: Low-level I/O

minor: Read failed

追踪(最近一次呼叫最后一次):

文件“”,第1行,

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第165行, getitem

return self.get(key)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第261行,in get

return self._read_group(group)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第651行,在_read_group中     return handler(group,where)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第400行,在_read_frame中     返回DataFrame(self._read_block_manager(group))

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第426行,在_read_block_manager中     ax = self._read_index(group,'axis%d'%i)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第487行,在_read_index中     _,index = self._read_index_node(getattr(group,key))

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第532行,在_read_index_node中     data = node [:]

文件“/usr/share/python27/lib/python2.7/site-packages/tables/array.py”,第684行, getitem     arr = self._readSlice(startl,stopl,stepl,shape)

文件“/usr/share/python27/lib/python2.7/site-packages/tables/array.py”,第781行,在_readSlice中     self._g_readSlice(startl,stopl,stepl,nparr)

文件“hdf5Extension.pyx”,第1092行,在tables.hdf5Extension.Array._g_readSlice中(tables / hdf5Extension.c:9570) tables.exceptions.HDF5ExtError:读取数组数据时出现问题。

任何人都可以帮忙解决这个问题吗?非常感谢你。

2 个答案:

答案 0 :(得分:0)

HDF5文件已损坏。您可以通过写入,然后在中间(ctrl-c)中断它来实现此目的。你将无法恢复。 HDF5以块的形式写入,如果块被中断,我认为状态不一致。

如果您正在进行并发写入(线程或进程),您也会受到损坏。看到这个:http://pandas.pydata.org/pandas-docs/dev/io.html#notes-caveats

答案 1 :(得分:0)

嗯,听起来HDF5库可能无法在启用线程安全配置选项的情况下编译(--enable-threadsafe)。此外,如果您同时从不同的进程写入同一文件,那将无法正常工作 - 您需要关闭该文件并从其他进程重新打开它。

请在此处查看HDF5常见问题解答: http://www.hdfgroup.org/hdf5-quest.html#gconc