将压缩文件夹内的文件夹中的 H5File 读入 pandas 数据帧
Read H5File from a folder inside a zipped folder into pandas dataframe
问题:将压缩文件夹内的文件夹中的 H5File 读取到 pandas 数据帧中
背景:我的目录结构是这样的:
文件.zip/2019/file.h5
file.zip是压缩文件夹
2019是压缩文件夹里面的文件夹
我可以使用 extractall 提取文件夹并从文件夹中读取 h5 文件。但是,希望将其直接从压缩文件夹读取到 pandas 数据框。
创建示例文件的代码:
下面是重新创建示例 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 的文件夹中并压缩它。所以现在目录结构看起来像 "file.zip/2019/file.h5"
注意:这是一个H5py文件和HDFStore。 Pandas read_hdf 无法处理 H5Files。阅读 HDF5 文档以更清楚地了解 H5 文件和 HDFStore。它们都有不同的内部结构但是相同的.h5 extension.For 读取H5文件,使用h5py包。
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 google 组的帮助下解决了这个问题:https://groups.google.com/forum/m/#!forum/h5py
导入压缩文件
导入 h5py
将 pandas 导入为 pd<br>
print(h5py.__version__)#确保版本为2.9以上
zf = zipfile.ZipFile('zipfolder.zip')
print(zf.namelist())#获取文件对象的名称<br>
fiz = zf.open('zipfolder/2019/sample.h5')<br>
hf = h5py.File(fiz,'r')<br>
print(list(hf.keys())) # 查看h5文件中的数据集<br>
df = pd.DataFrame(hf['dset'][:])
df.head()
使用 h5py 读取 h5Files。 Pandas 仅读取具有结构化数据帧格式的 HDFStore 格式,目前不读取 h5 文件。
问题:将压缩文件夹内的文件夹中的 H5File 读取到 pandas 数据帧中
背景:我的目录结构是这样的:
文件.zip/2019/file.h5
file.zip是压缩文件夹
2019是压缩文件夹里面的文件夹
我可以使用 extractall 提取文件夹并从文件夹中读取 h5 文件。但是,希望将其直接从压缩文件夹读取到 pandas 数据框。
创建示例文件的代码:
下面是重新创建示例 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 的文件夹中并压缩它。所以现在目录结构看起来像 "file.zip/2019/file.h5"
注意:这是一个H5py文件和HDFStore。 Pandas read_hdf 无法处理 H5Files。阅读 HDF5 文档以更清楚地了解 H5 文件和 HDFStore。它们都有不同的内部结构但是相同的.h5 extension.For 读取H5文件,使用h5py包。
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 google 组的帮助下解决了这个问题:https://groups.google.com/forum/m/#!forum/h5py
导入压缩文件
导入 h5py
将 pandas 导入为 pd<br>
print(h5py.__version__)#确保版本为2.9以上
zf = zipfile.ZipFile('zipfolder.zip')
print(zf.namelist())#获取文件对象的名称<br>
fiz = zf.open('zipfolder/2019/sample.h5')<br>
hf = h5py.File(fiz,'r')<br>
print(list(hf.keys())) # 查看h5文件中的数据集<br>
df = pd.DataFrame(hf['dset'][:])
df.head()
使用 h5py 读取 h5Files。 Pandas 仅读取具有结构化数据帧格式的 HDFStore 格式,目前不读取 h5 文件。