在Pandas时间序列中每天查询相同的时间值

2024-10-05 14:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个每天有24小时分钟数据的多日数据帧中获取07h00值。在

import numpy as np
import pandas as pd

aframe = pd.DataFrame([np.arange(10000), np.arange(10000) * 2]).T
aframe.index = pd.date_range("2015-09-01", periods = 10000, freq = "1min")

aframe.head()
Out[174]: 
                     0  1
2015-09-01 00:00:00  0  0
2015-09-01 00:01:00  1  2
2015-09-01 00:02:00  2  4
2015-09-01 00:03:00  3  6
2015-09-01 00:04:00  4  8

aframe.tail()
Out[175]: 
                        0      1
2015-09-07 22:35:00  9995  19990
2015-09-07 22:36:00  9996  19992
2015-09-07 22:37:00  9997  19994
2015-09-07 22:38:00  9998  19996
2015-09-07 22:39:00  9999  19998

在这个跨越7天的10000行数据帧中,如何尽可能高效地获得每天的7am值?假设我必须对非常大的tick数据库执行此操作,因此我高度重视速度和低内存使用率。在

我知道我可以用以下字符串作为索引:

^{pr2}$

但我需要的基本上是一个通配符样式的查询

aframe.ix["* 07:00:00"]

Tags: 数据importnumpydataframepandasdateindexas
1条回答
网友
1楼 · 发布于 2024-10-05 14:21:24

您可以使用^{}

>>> locs = aframe.index.indexer_at_time('7:00:00')
>>> aframe.iloc[locs]
                        0      1
2015-09-01 07:00:00   420    840
2015-09-02 07:00:00  1860   3720
2015-09-03 07:00:00  3300   6600
2015-09-04 07:00:00  4740   9480
2015-09-05 07:00:00  6180  12360
2015-09-06 07:00:00  7620  15240
2015-09-07 07:00:00  9060  18120

如果您需要选择一天中两个特定时间之间的所有索引,还有^{}。在

这两个方法都返回所需值的整数位置;可以使用iloc获取序列或数据帧的相应行,如上所示。在

相关问题 更多 >