Tôi đang cố gắng tạo một hàm cập nhật một DataFrame gấu trúc được lưu trữ mà tôi đã lưu trữ trong một PyTable với dữ liệu mới từ một DataFrame pandas. Tôi muốn kiểm tra xem một số dữ liệu bị thiếu trong PyTable cho DatetimeIndexes cụ thể (giá trị là NaN hoặc Dấu thời gian mới có sẵn), thay thế bằng giá trị mới từ một DataFrame gấu trúc đã cho và nối nó vào Pytable. Về cơ bản, chỉ cần cập nhật một Pytable. Tôi có thể lấy DataFrame kết hợp bằng phương thức combined_first trong Pandas. Dưới Pytable được tạo ra với dữ liệu giả:Cập nhật gấu trúc DataFrame được lưu trữ trong Pytable với gấu trúc khác DataFrame
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')
Vì vậy, các pytable được tạo ra. Giả sử tôi đã khác dataFrame mà tôi muốn cập nhật Pytable với:
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()
Vấn đề là các PyTable giữ các giá trị ban đầu, không cập nhật những cái hiện có. Bây giờ tôi có các mục trùng lặp (theo chỉ số) vì các giá trị ban đầu không được ghi đè.
Tóm tắt: Làm cách nào để cập nhật PyTable bằng một DataFrame khác?
Xin cảm ơn, Elv
Thực tế, đó là giải pháp tạm thời của tôi. Cảm ơn bạn về thông tin – Elvin