2016-11-20 302 views
-1

我有一个包含4个数据集的hdf5文件,每个数据集有3列。 dtype是int64。我试图将它导出到.txt或.csv文件中,我想将每个数据集放在一个单独的文件中,每个文件都有3列。我在python试过此命令: here is small example of inputs将多个数据集从.hdf5导出到python中的csv

with open('test.txt','wb') as f: 
    np.savetxt(f,s1,fmt='%s') 

但输出与许多名单.txt文件并没有列。不同的数据集也不会分开!这里是我想要得到的输出的一个小例子,当然是一个数据集,它将在一个单独的文件中。

s1 s2 s3 
4 6 8 
5 7 8 
7 4 6 

你是否建议如何做到这一点?

+0

举一个's1'内容的小例子。 –

+0

问题用图片更新。请点击链接。在输入0,1和2代表s1,s2和s3 – bzmby

+0

这不是很有帮助。我对's1'的获取方式感兴趣:你如何提取hdf5数据集,它是如何作为numpy数据类型的?尽量不要包含图片链接:它们很少会保留多年。相反,以文本格式将数据(或其子集)添加到您的问题中。 当你在这里,你可以添加一个例子(前20个字符左右)的'test.txt'的内容。 –

回答

0

您可能需要使用免费工具HDFql(http://www.hdfql.com)在Python使用下面的代码片段来解决这个问题:

# import HDFql module (make sure it can be found by the Python interpreter) 
import HDFql 

# use (i.e. open) HDF file named "example.h5" 
HDFql.execute("USE FILE example.h5") 

# write datasets dataset1, dataset2, dataset3 and dataset4 into files file1.csv, file2.csv, file3.csv and file4.csv 
HDFql.execute("SELECT FROM dataset1 INTO FILE file1.csv SPLIT 3") 
HDFql.execute("SELECT FROM dataset2 INTO FILE file2.csv SPLIT 3") 
HDFql.execute("SELECT FROM dataset3 INTO FILE file3.csv SPLIT 3") 
HDFql.execute("SELECT FROM dataset4 INTO FILE file4.csv SPLIT 3") 

执行这段代码的结果将是四个文件命名file1.csvfile2.csvfile3.csvfile4.csv 其中每一个将分别包含存储在数据集dataset1,dataset2,dataset3dataset4中的数据。

对于文件中写入的每三个元素(在本例中为三个64位数字),还会写入一个新行(因此关键字为SPLIT 3),每个元素之间用逗号分隔。如果您需要使用不同的分隔符,请使用关键字SEPARATOR(例如SELECT FROM dataset1 INTO FILE file1.csv SEPARATOR * SPLIT 3)。