如何用Python的h5py包读取HDF5文件并按列名提取数据
使用h5py读取HDF5文件并按列名提取数据
先梳理文件结构
HDF5是层级式存储结构,先打开文件确认内部内容:
import h5py # 用with语句自动管理文件关闭,避免手动close的麻烦 with h5py.File('filename.hdf5', "r") as f: # 打印根目录下的所有数据集/组名称 print("文件内容列表:", list(f.keys()))
定位目标数据集
假设输出里有个名为dataset的条目(替换成你实际的数据集名称),先查看它的结构,确认是否包含age、distance这些列名:
with h5py.File('filename.hdf5', "r") as f: target_dataset = f['dataset'] # 打印数据集的数据类型,会列出所有列名信息 print("数据集结构:", target_dataset.dtype)
按列名提取数据
如果dtype输出里能看到age、distance字段,直接通过字段名提取即可:
with h5py.File('filename.hdf5', "r") as f: target_dataset = f['dataset'] # 提取age列,[()]用于把h5py的数据集对象转为numpy数组 age_column = target_dataset['age'][()] # 提取distance列 distance_column = target_dataset['distance'][()] # 打印前几条数据验证结果 print("age列前5条数据:", age_column[:5]) print("distance列前5条数据:", distance_column[:5])
特殊情况:列是独立数据集
如果文件里的age、distance本身就是单独的数据集(根目录下直接能看到这两个键),直接读取对应数据集即可:
with h5py.File('filename.hdf5', "r") as f: age_column = f['age'][()] distance_column = f['distance'][()]
关于pd.read_hdf无效的说明
pd.read_hdf仅支持Pandas专属的HDFStore格式文件,如果你的HDF5是用h5py、MATLAB等其他工具生成的通用格式,就无法用Pandas直接读取,这时候h5py是更通用的解决方案。
内容的提问来源于stack exchange,提问作者ElenaM
相关产品推荐
相关产品推荐

