gpt4 book ai didi

python - Pandas HDFStore - 从多个表中获取最后一条记录

转载 作者:行者123 更新时间:2023-12-01 05:00:20 32 4
gpt4 key购买 nike

我通过 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?即使选择最后一条记录而不拉动整个数据帧作为尾部也可能会大大加快速度。如何做到这一点?

最佳答案

使用start和/或stop来指定行范围。您仍然需要迭代键,但这只会选择表的最后一行,因此应该非常快。

In [1]: df = DataFrame(np.random.randn(10,5))

In [2]: df.to_hdf('test.h5','df',mode='w',format='table')

In [3]: store = pd.HDFStore('test.h5')

In [4]: store
Out[4]:
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df frame_table (typ->appendable,nrows->10,ncols->5,indexers->[index])

In [5]: nrows = store.get_storer('df').nrows

In [6]: nrows
Out[6]: 10

In [7]: store.select('df',start=nrows-1,stop=nrows)
Out[7]:
0 1 2 3 4
9 0.221869 -0.47866 1.456073 0.093266 -0.456778

In [8]: store.close()

这是一个使用 nrows 的问题(出于不同目的)here

关于python - Pandas HDFStore - 从多个表中获取最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372538/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com