使用HDFStore.append时是否存在控制用于存储数据帧索引的数据类型的方法?
似乎pandas索引总是在hdf5文件中以64位存储。我想提高存储效率并减小索引列的大小。
我有一个独特的3列多索引并保存它们,因为uint64索引在我的应用程序中浪费了大量空间:
给出以下数据框
In [15]: df.dtypes
Out[15]: indA int32
indB int16
indC int8
data float32
dtype: object
只需在df.set_index(['indA', 'indB', 'indC'])
之前设置HDFStore.append
,就会导致indA
,indB
和indC
在hdf5文件中存储为Int64Col
。
不设置pandas索引并指定pytables数据列:
store.append('mytable', df, data_columns=['indA', 'indB', 'indB'])
indA
,indB
和indC
与原始dtypes一起存储,但hdf5文件中还存储了Int64Col
。
这实际上没有帮助:通过存储在原始dtypes中,我保存/保存了三个ind
列的56位。然而,额外的(多余的)索引列需要64位......
有什么想法吗?
答案 0 :(得分:2)
你的方法是正确的。数据列提供搜索功能并提供dtype保留。索引存储目前相当固定。
提供存储索引的选项是一个悬而未决的问题,请参阅here。我已经做了一些工作,但它不是高优先级的ATM。欢迎你来看看。
想要缩小存储空间的通常答案是使用压缩。你好像通过很多箍跳来节省相对少量的存储空间,但这就是my2c。