Существует ли способ управления типом данных, который используется для хранения индексов фреймов данных при использовании HDFStore.append?
Кажется, что индексы pandas всегда хранятся с 64 битами в файле hdf5. Я хотел бы повысить эффективность хранения и уменьшить размер столбцов индекса.
У меня есть уникальный мультииндекс с тремя столбцами, и сохранение их как индексов 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
сохраняются как Int64Col
в файле hdf5.
Не устанавливать индекс pandas и вместо этого указывать столбцы данных pytables:
store.append('mytable', df, data_columns=['indA', 'indB', 'indB'])
indA
, indB
и indC
сохраняются с их исходными dtypes, однако дополнительный Int64Col
хранится в файле hdf5.
Это на самом деле не помогает: сохраняя исходные dtypes, я сохраняю/сохраняю 56 бит для трех столбцов ind
. Однако дополнительный (лишний) столбец индекса стоит 64 бита...
Есть идеи?