pracowałem już od dłuższego czasu za pomocą Python i pandy do analizy zbioru danych godzinowych i znaleźć to bardzo miłe (pochodzących z Matlab.)pandy, python - jak wybrać konkretne razy timeseries
Teraz jestem trochę utknęły. Tworzę DataFrame
tak:
SamplingRateMinutes=60
index = DateRange(initialTime,finalTime, offset=datetools.Minute(SamplingRateMinutes))
ts=DataFrame(data, index=index)
co chcę teraz zrobić, to wybrać dane dla wszystkich dni w godzinach od 10 do 13 i 20-23 do wykorzystywania danych do dalszych obliczeń. tej pory w plasterkach danych przy użyciu
selectedData=ts[begin:end]
I jestem pewny, aby uzyskać jakąś brudną pętli, aby wybrać dane potrzebne. Ale musi istnieć bardziej elegancki sposób indeksowania exacly, czego chcę. Jestem pewien, że jest to wspólny problem i rozwiązanie w Pseudokod powinien wyglądać trochę tak:
myIndex=ts.index[10<=ts.index.hour<=13 or 20<=ts.index.hour<=23]
selectedData=ts[myIndex]
Aby wspomnieć Jestem inżynierem i nie programator :) ... jeszcze
Działa! Wielkie dzięki! –
Oto, jak to rozwiązanie zostanie zaimplementowane w składni na 0.10 i połączenie go z odpowiedzią Wesa poniżej: 'dr = pd.date_range (dt (2009,1,1), dt (2010, 12,31), freq = "H"); dt = pd.DataFrame (rand (len (dr), 2), dr); godzina = dt.index.hour; selektor = ((10 <= godzina) i (godzina <= 13)) | ((20 <= godzina) i (godzina <= 23)) dane = dt [selektor] ' –