【发布时间】:2015-01-16 01:28:00
【问题描述】:
在使用HDFStore.append时,是否存在控制用于存储数据帧索引的数据类型的方法?
似乎 pandas 索引总是以 64 位存储在 hdf5 文件中。我想提高存储效率并减小索引列的大小。
我有一个唯一的 3 列多索引,将它们保存为 uint64 索引在我的应用程序中会浪费大量空间:
给定以下数据框
In [15]: df.dtypes
Out[15]: indA int32
indB int16
indC int8
data float32
dtype: object
只需在HDFStore.append 之前设置df.set_index(['indA', 'indB', 'indC']) 会导致indA、indB 和indC 在hdf5 文件中存储为Int64Col。
不设置 pandas 索引而是指定 pytables 数据列:
store.append('mytable', df, data_columns=['indA', 'indB', 'indB'])
indA、indB 和 indC 与其原始 dtype 一起存储,但额外的 Int64Col 存储在 hdf5 文件中。
这并没有真正的帮助:通过存储在原始数据类型中,我为三个 ind 列保存/保存 56 位。然而,额外的(多余的)索引列需要 64 位...
有什么想法吗?
【问题讨论】:
标签: python types pandas pytables hdfstore