使用 Python 将多个 CSV 导入 HDF5

Posted

技术标签:

【中文标题】使用 Python 将多个 CSV 导入 HDF5【英文标题】:import multiple CSV into HDF5 using Python 【发布时间】:2020-12-06 06:19:20 【问题描述】:

我尝试使用以下代码将特定路径中的多个 CSV 文件导入日期集 HDF5 文件:

import numpy as np
import h5py
import pandas as pd
import glob
yourpath = '/root/Desktop/mal/ex1'
all_files = glob.glob(yourpath + "/*.csv")
li = []
for filename in all_files:
df = pd.read_csv(filename,index_col=None, header=0)
li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

hf = h5py.File('data.h5', 'w')
hf.create_dataset('dataset_1', data=frame)
hf.close()

但我有一个错误:

第 15 行,在 frame = pd.concat(li, axis=0, ignore_index=True) 文件“/usr/local/lib/python3.7/site-packages/pandas/core/reshape/concat.py” ,第 281 行,在 concat sort=sort 中,文件“/usr/local/lib/python3.7/site-packages/pandas/core/reshape/concat.py”,第 329 行,在 init 中引发 ValueError("No objects to concatenate") ValueError: 没有要连接的对象 –

【问题讨论】:

【参考方案1】:

尝试以这种方式连接 csv 文件:

PATH = r"/...." # your Path
extension = 'csv'
os.chdir(PATH)
csv_list = glob.glob('*.'.format(extension))
print(csv_list)

# creates new df
df = pd.DataFrame()

for csv in csv_list:
    temp = pd.read_csv(csv)
    df = pd.concat([df, temp], ignore_index=True)
    
df.drop_duplicates(keep='first', inplace=True)

# .... here comes the rest of your code

【讨论】:

当我创建数据集 hf.create_dataset('dataset_1', data=df) 时,它的工作仍然有问题,错误是“TypeError: Object dtype dtype('O') has no native HDF5 equivalent”

以上是关于使用 Python 将多个 CSV 导入 HDF5的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫将 CSV 文件转换为 HDF5

将大量数据集从 SQL 服务器导入 HDF5

Caffe:将 CSV 文件转换为 HDF5

将多个CSV文件导入具有相同名称的变量

将大 csv 转换为 hdf5

用 Python 编写 HDF5 文件的最快方法?