如何将组合的 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 文件并使用 h5pyPytables(表)将创建的数组直接加载到 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 下的数据集导入?的主要内容,如果未能解决你的问题,请参考以下文章

如何旋转子组?

BIRT将两个数据集中的字段报告/组合到一个动态文本框中

Python Pandas - 组合 CSV 并添加文件名

以递归方式附加到 .csv 文件

如何批处理将多个文件夹下的excel文件(xls,xlsx,csv等)合并成一个文件?

python:pandas - 如何将前两行 pandas 数据帧组合到数据帧头?