在Python中加载csv并保存HDF5

在Python中加载csv并保存HDF5,python,numpy,hdf5,pytables,h5py,Python,Numpy,Hdf5,Pytables,H5py,我试图从文本文件(三列浮点,65341行,由一个或多个空格分隔)导入数据,并将其保存到HDF5文件中。我试图将它们保存在一个表中,该表是由文件名定义的三个组的子组 因此,对于名为“data_a1_b2_c3.dat”的文件,我希望在/data/a1/b2/c3中有一个1x6000数组(其中c3是表) 我可以创建HDF5文件和组,但是创建表是一个问题 这就是我到目前为止所想到的(我省略了文件名解析和错误检查;这很有效): 最后一行抛出一个错误,如下所示: Traceback (most recen

我试图从文本文件(三列浮点,65341行,由一个或多个空格分隔)导入数据,并将其保存到HDF5文件中。我试图将它们保存在一个表中,该表是由文件名定义的三个组的子组

因此,对于名为“data_a1_b2_c3.dat”的文件,我希望在/data/a1/b2/c3中有一个1x6000数组(其中c3是表)

我可以创建HDF5文件和组,但是创建表是一个问题

这就是我到目前为止所想到的(我省略了文件名解析和错误检查;这很有效):

最后一行抛出一个错误,如下所示:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/tables/file.py", line 1067, in create_table
    chunkshape=chunkshape, byteorder=byteorder)
  File "/usr/lib64/python2.7/site-packages/tables/table.py", line 842, in __init__
    descr_from_dtype(nparray.dtype)
  File "/usr/lib64/python2.7/site-packages/tables/description.py", line 759, in descr_from_dtype
    for name in dtype_.names:
TypeError: 'NoneType' object is not iterable
下面是我要导入的数据文件的前三行(只需要第三列)


为了快速取胜,您可以将数据保存为数组(我猜是这样的,因为数据只有1D):

还要记住关闭文件:

h5.close()
结果:

如果您真的想将其另存为表,您基本上必须记住,表需要先定义(根据其记录结构),然后分配和刷新其值

那么,你在做什么,除了在开始时添加以下内容:

class Data(tb.IsDescription):
  value = tb.Float32Col()
然后做:

t = h5.create_table(gp3,"c3",Data,'my data')

row = t.row
for d in data:
   row['value'] = d
   row.append()
t.flush()
结果:


最后,就我个人而言,我将实际使用CSV到HDF5的东西-更容易操作数据帧和序列…

有时,您可以通过在上搜索URL来查找网页的缓存版本。这是一个截至2014年7月3日的示例。我很确定这里的问题是数据是一个数据数组,使用pytables的示例都使用类或重新数组。()如果您在其他地方使用pytables,请继续插入,否则单独使用h5py接口并不太困难。
a = h5.create_array(gp3,"c3",data,'my data')
h5.close()
class Data(tb.IsDescription):
  value = tb.Float32Col()
t = h5.create_table(gp3,"c3",Data,'my data')

row = t.row
for d in data:
   row['value'] = d
   row.append()
t.flush()