2017-03-05 4 views
0

Ich habe eine Multi-Index-Pandas-Array und ich versuche, das Minimum und die Max zwischen den 9: 30 ~ 10: 00 Am. Ich könnte das Array iterieren und prüfen, ob die Zeiten übereinstimmen oder nicht. Aber es sollte ein Weg über Pandas sein ...Python Pandas Suche nach Stunden auf mehrere Index

Gibt es eine Möglichkeit, die 30 Minuten des Handelstages zu gruppieren/suchen? Ich versuche es zu gruppieren, funktioniert aber nicht richtig, da es nicht ok ist, nur [: 30] zu verwenden, da die Daten Vormarktwerte haben.

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) 

Daten:

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 –

Antwort

0

Nach mehr Grab i mit dieser Linie herausgefunden haben, erhält die algo beheben, indem Sie between_time

Rückkehr frame.between_time (START_TIME = '9: 30', end_time = '10: 00 ')

Verwandte Themen