2015-09-17 57 views
5

我想每天從一個多天的DataFrame獲得07h00的值,每天都有24小時的分鐘數據。每天在Pandas時間序列中查詢相同的時間值

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 

在這10 000行數據幀跨越7天,我將如何每天獲得早上7點值儘可能高效地?假設我可能必須爲非常大的刻度數據庫執行此操作,所以我高度重視速度和低內存使用情況。

我知道我能指標與字符串,例如:

aframe.ix["2015-09-02 07:00:00"] 
Out[176]: 
0 1860 
1 3720 
Name: 2015-09-02 07:00:00, dtype: int64 

但我需要的是基本例如

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

回答

5

通配符樣式的查詢可以使用indexer_at_time

>>> 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 

還有indexer_between_time,如果你需要選擇位於tw一天的特定時間。

這兩種方法都返回所需值的整數位置;如上所示,可以使用iloc獲取Series或DataFrame的相應行。

相關問題