Не сохраняйте индекс данных для df.to_hdf () - PullRequest
0 голосов
/ 21 марта 2020

Как я могу отбросить индекс кадра данных при сохранении его в h5? RangeIndex преобразуется в Int64Index, что занимает много памяти.

Я пытаюсь dataset.to_hdf('data.h5', key='df', mode='w', index=False), но он все еще сохраняет индекс и увеличивает размер файла.

Документация для индекса неясна: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_hdf.html

import numpy as np
import pandas as pd
x = np.random.normal (0,1, 1000000)
y = x*2
dataset = pd.DataFrame({'Column1': x, 'Column2': y})
print (dataset.info(memory_usage='deep'))
dataset.to_hdf('data.h5', key='df', mode='w', index=False)
dataset2 = pd.read_hdf("data.h5")
print (dataset2.info(memory_usage='deep'))
dataset2.to_hdf('data2.h5', key='df', mode='w', index=False)
dataset3 = pd.read_hdf("data2.h5")
print (dataset3.info(memory_usage='deep'))

Что дает:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1    1000000 non-null float64
Column2    1000000 non-null float64
dtypes: float64(2)
memory usage: 15.3 MB
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1    1000000 non-null float64
Column2    1000000 non-null float64
dtypes: float64(2)
memory usage: 22.9 MB
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 0 to 999999
Data columns (total 2 columns):
Column1    1000000 non-null float64
Column2    1000000 non-null float64
dtypes: float64(2)
memory usage: 22.9 MB
None
...