我有大量的数据帧通过 Pandas 导出到一系列 HDFStore 文件中。我需要能够根据需要快速提取每个数据帧的最新记录。
设置:
<class 'pandas.io.pytables.HDFStore'>
File path: /data/storage_X100.hdf
/X1 frame_table (typ->appendable,nrows->2652,ncols->1,indexers->[index])
/XX frame_table (typ->appendable,nrows->2652,ncols->3,indexers->[index])
/Y1 frame_table (typ->appendable,nrows->2652,ncols->2,indexers->[index])
/YY frame_table (typ->appendable,nrows->2652,ncols->3,indexers->[index])
我在每个 HDF 文件中存储了大约 100 个数据帧,并且有大约 5000 个文件要运行。HDFStore 中的每个数据帧都使用 DateTimeIndex 进行索引。
对于单个文件,我目前正在遍历HDFStore.keys()
,然后使用tail(1)
如下方式查询数据框:
store = pandas.HDFStore(filename)
lastrecs = {}
for key in store.keys():
last = store[key].tail(1)
lastrecs[key] = last
有没有更好的方法来做到这一点,也许是HDFStore.select_as_multiple
?即使选择最后一条记录而不将整个数据框拉到尾部也可能会大大加快速度。如何才能做到这一点?