【Pandas】pandas DataFrame to_hdf

Pandas2.2 DataFrame

Serialization IO conversion

方法描述
DataFrame.from_dict(data[, orient, dtype, …])用于从 字典(dict) 构建 DataFrame 的类方法
DataFrame.from_records(data[, index, …])用于将 结构化数据(如列表的元组、NumPy 结构化数组)转换为 DataFrame
DataFrame.to_orc([path, engine, index, …])用于将 DataFrame 保存为 ORC(Optimized Row Columnar)格式的文件
DataFrame.to_parquet([path, engine, …])用于将 DataFrame 写入 Parquet 文件格式的方法
DataFrame.to_pickle(path, *[, compression, …])用于将 DataFrame 对象序列化并保存为 pickle 文件的方法
DataFrame.to_csv([path_or_buf, sep, na_rep, …])用于将 DataFrame 写入 CSV(逗号分隔值)文件的方法
DataFrame.to_hdf(path_or_buf, *, key[, …])用于将 DataFrame 写入 HDF5 文件的方法

pandas DataFrame to_hdf() 方法

pandas.DataFrame.to_hdf() 是 Pandas 提供的用于将 DataFrame 写入 HDF5 文件的方法。HDF5(Hierarchical Data Format)是一种适用于存储和管理大规模科学数据的二进制文件格式,支持高效读写、压缩、分组结构等特性。


方法签名
DataFrame.to_hdf(
    path_or_buf,
    *,
    key,
    mode='a',
    complevel=None,
    complib=None,
    append=False,
    format=None,
    index=True,
    min_itemsize=None,
    nan_rep=None,
    dropna=None,
    data_columns=None,
    errors='strict',
    encoding='UTF-8'
)

参数说明
参数名类型说明
path_or_bufstr 或 file-like 对象文件路径或可写对象(如 BytesIO)。
keystr在 HDF 文件中存储该 DataFrame 的唯一标识键名(路径形式,如 /group/dataframe)。
mode{‘a’, ‘w’, ‘r+’}, 默认 ‘a’文件操作模式:
- 'a':追加或读取
- 'w':覆盖写入
- 'r+':必须文件存在,允许读写
complevelint, 可选压缩级别(0~9),默认不压缩。
complib{‘zlib’, ‘lzo’, ‘bzip2’, ‘blosc’}, 可选使用的压缩库。
appendbool,默认 False是否以“追加”方式写入(仅支持 format='table')。
format{‘fixed’, ‘table’}, 默认 None存储格式:
- 'fixed':快速但不支持查询
- 'table':支持条件查询(更慢)
indexbool,默认 True是否保存行索引。
min_itemsizedict 或 int,可选指定字符串列的最小存储长度(避免截断)。
nan_repscalar,可选NaN 值的替代表示。
dropnabool,可选是否删除全为 NaN 的列(Pandas >= 1.1.0)。
data_columnslist,可选指定可用于查询的列(仅在 format='table' 时有效)。
errors{‘strict’, ‘ignore’, ‘replace’}, 默认 ‘strict’编码错误处理方式。
encodingstr,默认 ‘UTF-8’字符串编码方式。

返回值

无返回值,直接写入 HDF5 文件。


示例代码
示例 1:基础用法(固定格式)
import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({
    'id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, None]
})

# 写入 HDF5 文件(固定格式)
df.to_hdf('example.h5', key='df_fixed', mode='w')

结果:

  • 生成一个名为 example.h5 的 HDF5 文件。
  • 其中包含一个键为 df_fixed 的数据集,使用默认的 fixed 格式存储。

示例 2:使用 table 格式并指定查询列
# 使用 table 格式,并指定可查询列
df.to_hdf('example.h5', key='df_table', mode='a', format='table', data_columns=['name', 'age'])

结果:

  • 追加写入同一个 HDF5 文件。
  • 键为 df_table 的数据集支持后续通过 where 条件查询,例如:
# 查询 name='Alice' 的记录
result = pd.read_hdf('example.h5', key='df_table', where='name == "Alice"')
print(result)

输出:

   id   name   age
0   1  Alice  25.0

示例 3:启用压缩
# 启用 zlib 压缩
df.to_hdf('compressed_example.h5', key='df_compressed', mode='w',
          complevel=9, complib='zlib')

结果:

  • 生成压缩后的 HDF5 文件,适合节省磁盘空间。

示例 4:设置字符串列最大长度
# 设置 name 列至少存储 20 个字符
df.to_hdf('example.h5', key='df_min_itemsize', mode='a',
          min_itemsize={'name': 20})

用途:

  • 避免长字符串被截断,尤其是在频繁追加写入时。

示例 5:追加写入(append)
# 第一次写入
df.head(2).to_hdf('appended.h5', key='df_append', mode='w', format='table')

# 追加写入
df.tail(1).to_hdf('appended.h5', key='df_append', mode='a', format='table')

结果:

  • appended.h5 中的 df_append 数据集包含所有三行数据。

注意事项
  • 推荐使用 format='table' 如果你需要进行条件查询。
  • append=True 仅在 format='table' 下有效。
  • 支持多种压缩算法,适合大数据归档。
  • 若需读取 HDF5 文件,可使用 pd.read_hdf()
  • HDF5 文件结构复杂,建议使用专门工具(如 h5py, hdfview)查看内部结构。

总结
特性说明
方法名DataFrame.to_hdf()
输入DataFrame
输出HDF5 文件
主要用途高效存储和查询大规模数据
支持压缩
支持查询✅(仅限 format='table'
分块追加
依赖库必须安装 tables(PyTables)

安装依赖
pip install tables
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuweidong0802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值