【发布时间】:2018-02-22 16:07:25
【问题描述】:
我有带有财务数据的大型熊猫数据框。 将其他列和 DataFrame 添加和连接到我的 .h5 文件中没有问题。
财务数据每分钟更新一次,我需要每分钟将一行数据附加到 .h5 文件内的所有现有表中。
这是我迄今为止尝试过的,但无论我做什么,它都会覆盖 .h5 文件,而不仅仅是附加数据。
HDF存储方式:
#we open the hdf5 file
save_hdf = HDFStore('test.h5')
ohlcv_candle.to_hdf('test.h5')
#we give the dataframe a key value
#format=table so we can append data
save_hdf.put('name_of_frame',ohlcv_candle, format='table', data_columns=True)
#we print our dataframe by calling the hdf file with the key
#just doing this as a test
print(save_hdf['name_of_frame'])
我试过的另一种方式,to_hdf:
#format=t so we can append data , mode=r+ to specify the file exists and
#we want to append to it
tohlcv_candle.to_hdf('test.h5',key='this_is_a_key', mode='r+', format='t')
#again just printing to check if it worked
print(pd.read_hdf('test.h5', key='this_is_a_key'))
这是其中一个 DataFrame 在被 read_hdf 后的样子:
time open high low close volume PP
0 1505305260 3137.89 3147.15 3121.17 3146.94 6.205397 3138.420000
1 1505305320 3146.86 3159.99 3130.00 3159.88 8.935962 3149.956667
2 1505305380 3159.96 3160.00 3159.37 3159.66 4.524017 3159.676667
3 1505305440 3159.66 3175.51 3151.08 3175.51 8.717610 3167.366667
4 1505305500 3175.25 3175.53 3170.44 3175.53 3.187453 3173.833333
下次我获取数据时(每分钟),我希望将其中的一行添加到我所有列的索引 5 中……然后是 6 和 7 ……依此类推,而无需读取和操作整个文件都在内存中,因为那样会破坏这样做的意义。 如果有更好的方法来解决这个问题,请不要害羞地推荐它。
附:抱歉这里的表格格式
【问题讨论】:
标签: python pandas dataframe hdf5