Я пытаюсь создать функцию, которая обновляет сохраненный DataFrame pandas, который я сохранил в PyTable, новыми данными из DataFrame pandas. Я хочу проверить, отсутствуют ли некоторые данные в PyTable для определенных DatetimeIndexes (значение NaN или доступна новая метка времени), заменить это новыми значениями из данного кадра данных pandas и добавить это в Pytable. По сути, просто обновите Pytable. Я могу получить объединенный DataFrame, используя метод comb_first в Pandas. Ниже Pytable создается с фиктивными данными:
import pandas as pd import numpy as np import datetime as dt index = pd.DatetimeIndex(start = dt.datetime(2001,1,1,0,0), periods = 20000,freq='10T') data_in_pytable = pd.DataFrame(index=index,data=np.random.randn(20000,2),columns=['value_1','value_2']) data.to_hdf(r'C:\pytable.h5','test',mode='r+',append=True,complevel=9,complib='zlib')
Итак, pytable создан. Предполагая, что у меня есть еще один кадр данных, с помощью которого я хочу обновить Pytable:
new_index = pd.DatetimeIndex(start = dt.datetime(2001,5,1,0,0), periods = 10000,freq='10T') data_to_update=pd.DataFrame(index=new_index,data=np.random.randn(10000,2),columns=['value_1','value_2']) store=pd.HDFStore(r'C:\pytable.h5',mode='r+',complevel=9,complib='zlib') store.append('test',store.select('test').combine_first(data_to_update)) store.close()
Проблема в том, что PyTable сохраняет исходные значения, а не обновляет существующие. Теперь у меня есть повторяющиеся записи (по индексу), потому что исходные значения не перезаписываются.
Резюме: как я могу обновить PyTable с помощью другого DataFrame?
Спасибо, Эльв