2017-03-05 69 views
0

我有一個多索引熊貓數組,我試圖找到9:30〜10:00之間的最小值和最大值。我可以迭代數組並檢查時間是否匹配。但它應該是一種通過熊貓的方式...Python熊貓按多個索引按小時搜索

有沒有一種方法來組合/搜索30分鐘的交易日?我試圖對其進行分組,但由於數據具有上市前價值,因此不能正確使用[:30]。

import pytz 
from datetime import datetime, date, time 
from datetime import timedelta 
import matplotlib.pyplot as pyplot 
from collections import defaultdict 
import pandas as pd 
from pandas.tseries.resample import TimeGrouper 
from pandas.tseries.offsets import DateOffset 
from pandas.tseries.index import DatetimeIndex 
from pandas import Timestamp 

def my_grouper(ts): 
    "Function to apply to the index of the DataFrame to break it into groups." 
    #pdb.set_trace() 
    # Returns midnight of the supplied date. 
    return pd.core.datetools.normalize_date(ts) 


def first_thirty_minutes(frame): 
    "Function to apply to the resulting groups." 
    start = frame.index.searchsorted("09:30:00") 
    end = frame.index.searchsorted("10:00:00") 
    return frame.iloc[start:end] 


hist = pd.read_csv("ES2.txt" ,index_col=0) 
eastern = pytz.timezone('US/Eastern') 
hist.index = pd.DatetimeIndex(hist.index).tz_localize('UTC').tz_convert('US/Eastern') 
data = hist.groupby(my_grouper).apply(first_thirty_minutes) 

數據:

DateTime,Hour,Open,High,Low,Close,Volume 
1997-09-11 00:00:00-04:00,1997-09-11 00:33:00-04:00,1176.25,1176.25,1174.5,1174.5,4 
1997-09-11 00:00:00-04:00,1997-09-11 00:34:00-04:00,1173.75,1173.75,1173.75,1173.75,1 
1997-09-11 00:00:00-04:00,1997-09-11 01:45:00-04:00,1173.25,1173.25,1173.25,1173.25,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:08:00-04:00,1172.75,1172.75,1172.75,1172.75,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:09:00-04:00,1172.5,1172.5,1172.5,1172.5,2 
1997-09-11 00:00:00-04:00,1997-09-11 04:10:00-04:00,1172.5,1172.5,1172.5,1172.5,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:11:00-04:00,1172.0,1172.0,1172.0,1172.0,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:20:00-04:00,1172.0,1172.0,1172.0,1172.0,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:21:00-04:00,1171.75,1172.25,1171.75,1172.25,4 
1997-09-11 00:00:00-04:00,1997-09-11 04:22:00-04:00,1172.0,1172.0,1171.5,1171.5,2 
1997-09-11 00:00:00-04:00,1997-09-11 04:25:00-04:00,1171.0,1171.0,1171.0,1171.0,1 
1997-09-11 00:00:00-04:00,1997-09-11 04:31:00-04:00,1170.5,1170.5,1170.5,1170.5,1 
+0

http://pandas.pydata.org/pandas-docs/stable/merging.html#merging-asof –

回答

0

挖掘後,我已經發現了與該訂單獲得通過使用between_time

返回frame.between_time固定ALGO(START_TIME = '9:30', end_time = '10:00')