繁体   English   中英

从压缩文件夹中的文件夹中读取 H5File 到 pandas dataframe

[英]Read H5File from a folder inside a zipped folder into pandas dataframe

问题:从压缩文件夹中的文件夹中读取 H5File 到 pandas dataframe

背景:我的目录结构如下所示:
文件.zip/2019/file.h5

file.zip 是压缩文件夹
2019 是压缩文件夹内的文件夹

我可以使用 extractall 提取文件夹并从文件夹中读取 h5 文件。 但是,希望直接从压缩文件夹中读取它到 pandas dataframe。

创建示例文件的代码:
这是重新创建我试图在这种情况下使用的示例 h5 文件的代码:

步骤1:

import h5py
file = h5py.File('sample.h5','w')
dataset = file.create_dataset("dset",(4, 6), h5py.h5t.STD_I32BE)
file.close()

第2步:
创建文件后,将其放入文件夹“2019”中。 将“2019”放在另一个名为 zipfolder 和 zip 的文件夹中。 所以现在目录结构看起来像“file.zip/2019/file.h5”

注意:这是一个 H5py 文件和 HDFStore。 Pandas read_hdf 不能在 H5Files 上工作。 阅读 HDF5 文档以更清楚地了解 H5 文件和 HDFStore。 它们都有不同的内部结构但是相同的.h5 扩展名。对于读取 H5 文件,使用 h5py package。

import os
import pandas as pd
import zipfile

with zipfile.ZipFile('file.zip') as z:
    for filename in z.namelist():
        if os.path.isdir(filename) and filename == "2019":
            # read the file into a pandas dataframe
            df = pd.read_hdf(z.open(os.path.join(filename, "file.h5"), 'rb'))

希望对您有所帮助!

在 H5py 谷歌组的帮助下解决了这个问题: https://groups.google.com/forum/m/#!forum/h5py

import zipfile import h5py import pandas as pd
print(h5py.__version__)# Make sure the version is 2.9 or above zf = zipfile.ZipFile('zipfolder.zip') print(zf.namelist())# get the name of the fileobject
fiz = zf.open('zipfolder/2019/sample.h5')
hf = h5py.File(fiz,'r')
print(list(hf.keys())) # To see the datasets inside h5 File
df = pd.DataFrame(hf['dset'][:]) df.head()

使用 h5py 读取 h5Files。 Pandas 仅读取具有结构化 dataframe 格式的 HDFStore 格式,并且目前不读取 h5files。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM