Как импортировать объединенный CSV-файл в качестве набора данных в подгруппу /ds1?

Я пытаюсь собрать все файлы 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()

person M-kh    schedule 07.10.2020    source источник
comment
Я не использую pandas, поэтому не могу комментировать этот код. Было бы проще (IMHP) читать файлы CSV с помощью genfromtxt() NumPy и загружать созданные массивы непосредственно в HDF5 с помощью h5py или Pytables (таблицы).   -  person kcw78    schedule 07.10.2020


Ответы (1)


Я заметил, что вы создаете групповые объекты только в файле H5 xxx3 в приведенном выше коде. (xxx3.create_group())

Это то, что хотел бы ваш код, если бы вы читали данные с помощью NumPy и загружали в HDF5 с помощью h5py. Аргументы 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

person kcw78    schedule 07.10.2020