3

使用HDFStore.append时是否存在控制用于存储数据帧索引的数据类型的方法?

似乎熊猫索引总是以 64 位存储在 hdf5 文件中。我想提高存储效率并减小索引列的大小。

我有一个唯一的 3 列多索引,将它们保存为 uint64 索引在我的应用程序中是一种巨大的空间浪费:

给定以下数据框

In [15]: df.dtypes
Out[15]: indA              int32
indB              int16
indC              int8
data              float32
dtype: object

只需在结果df.set_index(['indA', 'indB', 'indC'])之前设置,并将其存储为hdf5 文件。HDFStore.appendindAindBindCInt64Col

不设置 pandas 索引并指定 pytables 数据列:

store.append('mytable', df, data_columns=['indA', 'indB', 'indB'])

indA,indBindC与其原始 dtypes 一起存储,但是附加Int64Col存储在 hdf5 文件中。

这并没有真正的帮助:通过存储在原始 dtypes 中,我为三ind列保存/保存 56 位。然而,额外的(多余的)索引列需要 64 位......

有任何想法吗?

4

1 回答 1

2

你的方法是正确的。数据列提供搜索能力并提供数据类型保存。索引存储目前相当固定。

提供存储索引的选项是一个未解决的问题,请参阅此处。我已经做了一些工作,但它不是高优先级的 ATM。欢迎您来看看。

想要缩小存储空间的通常答案是使用压缩。您似乎要跳过很多圈来节省相对较少的存储空间,但这就是 my2c。

于 2014-11-18T21:27:02.480 回答