Pandas HDFStore для последовательного чтения / записи наборов с переменным размером вне ядра

Я хочу читать и записывать данные в файл hdf5 постепенно, потому что я не могу поместить данные в память.

Данные для чтения / записи представляют собой наборы целых чисел. Мне нужно только читать / писать наборы последовательно. Нет необходимости в произвольном доступе. Как я читаю set1, затем set2, затем set3 и т. Д.

Проблема в том, что я не могу получить наборы по индексу.

import pandas as pd    
x = pd.HDFStore('test.hf', 'w', append=True)
a = pd.Series([1])
x.append('dframe', a, index=True)
b = pd.Series([10,2])
x.append('dframe', b, index=True)
x.close()

x = pd.HDFStore('test.hf', 'r')
print(x['dframe'])
y=x.select('dframe',start=0,stop=1)
print("selected:", y)
x.close()

Выход:

0     1
0    10
1     2
dtype: int64
selected: 0    1
dtype: int64

Это не выбирает мой 0-й сет, который {1,10}

1 ответ

Этот способ работает. Но я действительно не знаю, как быстро это.

И это сканирует весь файл, чтобы найти строки с индексом?

Это было бы пустой тратой времени.

import pandas as pd

x = pd.HDFStore('test.hf', 'w', append=True, format="table", complevel=9)
a = pd.Series([1])
x.append('dframe', a, index=True)
b = pd.Series([10,2])
x.append('dframe', b, index=True)
x.close()

x = pd.HDFStore('test.hf', 'r')
print(x['dframe'])
y=x.select('dframe','index == 0')
print('selected:')
for i in y:
    print(i)
x.close()

Выход:

0     1
0    10
1     2
dtype: int64
selected:
1
10
Другие вопросы по тегам