如何将组合的 CSV 文件作为子组 /ds1 下的数据集导入?
Posted
技术标签:
【中文标题】如何将组合的 CSV 文件作为子组 /ds1 下的数据集导入?【英文标题】:How to import a combined CSV file as a dataset under the subgroup /ds1? 【发布时间】:2021-01-22 08:35:09 【问题描述】:我正在尝试将所有 CSV 文件收集到一个 HDF5 中,并将它们作为子组 ds1 下的数据集导入。我尝试了以下代码,但没有得到我想要的:
import h5py
import numpy.random
import os
import glob
import pandas as pd
os.chdir("/root/Desktop/file/data/dataset/ds1")
extension = 'csv'
all_filenames = [i for i in glob.glob('*.'.format(extension))]
#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')
#Create a HDF5 file
xxx3 = "xxx3.h5py";
xxx3 = h5py.File(xxx3, "w");
file=pd.HDFStore('/root/Desktop/file/data/dataset/ds1','w')
IR= xxx3.create_group("/root/Desktop/file/data/dataset/ds1");
XAFS = xxx3.create_group("/root/Desktop/file/data/dataset/ds2");
combined_csv.csv=pd.read_csv('/root/Desktop/file/data/dataset/ds1combined_csv.csv')
file.put('combined_csv.csv',combined_csv.csv,format='table',data_columns=True)
xxx3.close()
【问题讨论】:
我不使用pandas
,因此无法评论该代码。使用 NumPy 的 genfromtxt()
读取 CSV 文件并使用 h5py
或 Pytables
(表)将创建的数组直接加载到 HDF5 会更简单(IMHP)。
【参考方案1】:
我注意到您在上面的代码中只在 H5 文件 xxx3 中创建了组对象。 (xxx3.create_group()
)
如果您使用 NumPy 读取数据并使用 h5py 加载到 HDF5,这就是您的代码所希望的。 np.genfromtxt()
参数取决于 CSV 的内容。您可能需要根据您的数据进行调整。
#Create a HDF5 file
import numpy as np
xxx3 = h5py.File("xxx3.h5py", "w");
rec_arr = np.genfromtxt("/root/Desktop/file/data/dataset/ds1combined_csv.csv",delimiter=',' ,names=True,encoding=None)
IR= xxx3.create_dataset("/ds1",data=rec_arr)
xxx3.close()
这里还有一个例子: SO 55576601
【讨论】:
以上是关于如何将组合的 CSV 文件作为子组 /ds1 下的数据集导入?的主要内容,如果未能解决你的问题,请参考以下文章