gpt4 book ai didi

pandas HDFStore 按日期时间索引选择行

转载 作者:行者123 更新时间:2023-12-04 19:51:00 26 4
gpt4 key购买 nike

我确定这可能非常简单,但我无法弄清楚如何通过日期时间索引对 Pandas HDFStore 表进行切片以获得特定范围的行。

我有一个看起来像这样的表:

mdstore = pd.HDFStore(store.h5)
histTable = '/ES_USD20120615_MIDPOINT30s'
print(mdstore[histTable])
open high low close volume WAP \
date
2011-12-04 23:00:00 1266.000 1266.000 1266.000 1266.000 -1 -1
2011-12-04 23:00:30 1266.000 1272.375 1240.625 1240.875 -1 -1
2011-12-04 23:01:00 1240.875 1242.250 1240.500 1242.125 -1 -1
...
[488000 rows x 7 columns]

例如,我想获得从 2012-01-11 23:00:00 到 2012-01-12 22:30:00 的范围。如果它在 df 中,我只会使用日期时间对索引进行切片,但我无法弄清楚如何直接从存储表中执行此操作,因此我不必将整个内容加载到内存中。
我试过 mdstore.select(histTable, where='index>20120111')这和我在 11 日和 12 日得到的所有东西一样有效,但我不知道如何添加时间。

最佳答案

示例是 here
需要 Pandas >= 0.13.0

In [2]: df = DataFrame(np.random.randn(5),index=date_range('20130101 09:00:00',periods=5,freq='s'))

In [3]: df
Out[3]:
0
2013-01-01 09:00:00 -0.110577
2013-01-01 09:00:01 -0.420989
2013-01-01 09:00:02 0.656626
2013-01-01 09:00:03 -0.350615
2013-01-01 09:00:04 -0.830469

[5 rows x 1 columns]

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

将其指定为带引号的字符串
In [8]: pd.read_hdf('test.h5','data',where='index>"20130101 09:00:01" & index<"20130101 09:00:04"')
Out[8]:
0
2013-01-01 09:00:02 0.656626
2013-01-01 09:00:03 -0.350615

[2 rows x 1 columns]

您也可以直接将其指定为时间戳
In [10]: pd.read_hdf('test.h5','data',where='index>Timestamp("20130101 09:00:01") & index<Timestamp("20130101 09:00:04")')
Out[10]:
0
2013-01-01 09:00:02 0.656626
2013-01-01 09:00:03 -0.350615

[2 rows x 1 columns]

关于pandas HDFStore 按日期时间索引选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273732/

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