ho lavorato oggi per un bel po 'di tempo utilizzando Python e panda per l'analisi di una serie di dati orari e lo trovo molto bello (Venendo da Matlab.)panda, pitone - come selezionare orari specifici in timeseries
Ora sono tipo di bloccato. Ho creato il mio DataFrame
così:
SamplingRateMinutes=60
index = DateRange(initialTime,finalTime, offset=datetools.Minute(SamplingRateMinutes))
ts=DataFrame(data, index=index)
Quello che voglio fare ora è quello di selezionare i dati per tutti i giorni alle ore 10 alle 13 e 20-23 di utilizzare i dati per ulteriori calcoli. Finora ho tagliati i dati utilizzando
selectedData=ts[begin:end]
e sono sicuro di ottenere un qualche tipo di looping sporco per selezionare i dati necessari. Ma ci deve essere un modo più elegante per indicizzare esattamente quello che voglio. Sono sicuro che questo è un problema comune e la soluzione in pseudocodice dovrebbe apparire un po 'così:
myIndex=ts.index[10<=ts.index.hour<=13 or 20<=ts.index.hour<=23]
selectedData=ts[myIndex]
Per parlare io sono un ingegnere e non programmatore :) ... ancora
Opere! Molte grazie! –
Ecco come questa soluzione sarebbe implementata nella sintassi per 0.10 e combinandola con la risposta di Wes sotto riportata: 'dr = pd.date_range (dt (2009,1,1), dt (2010,12,31), freq = 'H'); dt = pd.DataFrame (rand (len (dr), 2), dr); hour = dt.index.hour; Selettore = ((10 <= ora) & (ora <= 13)) | ((20 <= ora) & (ora <= 23)) data = dt [selector] ' –