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