我正在尝试创建一个函数,用 pandas DataFrame 中的新数据更新我存储在 PyTable 中的 pandas DataFrame。我想检查 PyTable 中是否缺少特定 DatetimeIndexes 的某些数据(值为 NaN 或有新的时间戳可用),将其替换为给定 pandas DataFrame 中的新值并将其附加到 Pytable。基本上,只需更新 Pytable 即可。我可以使用 Pandas 中的 merge_first 方法获取组合的 DataFrame。
下面的 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就创建好了。假设我有另一个 dataFrame,我想用它来更新 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 保留原始值,不更新现有值。我现在有重复的条目(按索引),因为原始值没有被覆盖。
概括:
如何使用另一个 DataFrame 更新 PyTable?
谢谢,
弱电