2016-10-09 5 views
0

ich der Pandas SerieProbleme Resampling Pandas Zeitreihe mit Zeitlücke zwischen Indizes

import pandas as pd 
index_1 = pd.date_range('1/1/2000', periods=4, freq='T') 
index_2 = pd.date_range('1/2/2000', periods=3, freq='T') 
series = pd.Series(range(4), index=index_1) 
series=series.append(pd.Series(range(3), index=index_2)) 
print series 
>>>2000-01-01 00:00:00 0 
    2000-01-01 00:01:00 1 
    2000-01-01 00:02:00 2 
    2000-01-01 00:03:00 3 
    2000-01-02 00:00:00 0 
    2000-01-02 00:01:00 1 
    2000-01-02 00:02:00 2 

so dem gesampelt werden soll, dass die resultierende Datenreihe nur jeden zweiten Eintrag enthält, dh

>>>2000-01-01 00:00:00 0 
    2000-01-01 00:02:00 2 
    2000-01-02 00:00:00 0 
    2000-01-02 00:02:00 2 

die (schlecht mit dokumentiert) Resample-Methode von Pandas in der folgenden Weise:

resampled_series = series.resample('2T', closed='right') 
print resampled_series 

Ich bekomme

>>>1999-12-31 23:58:00 0.0 
    2000-01-01 00:00:00 1.5 
    2000-01-01 00:02:00 3.0 
    2000-01-01 00:04:00 NaN 
    2000-01-01 00:56:00 NaN 
        ... 
    2000-01-01 23:54:00 NaN 
    2000-01-01 23:56:00 NaN 
    2000-01-01 23:58:00 0.0 
    2000-01-02 00:00:00 1.5 
    2000-01-02 00:02:00 3.0 

Warum beginnt es 2 Minuten früher als die ursprüngliche Serie? Warum enthält es alle dazwischen liegenden Zeitschritte, die nicht in der Originalserie enthalten sind? Wie kann ich mein gewünschtes Ergebnis erhalten?

Antwort

1

resample() ist nicht die richtige Funktion für Ihren Zweck.

versuchen Sie dies:

series[series.index.minute % 2 == 0] 
+0

Vielen Dank für Ihre Antwort. Aber wofür ist eigentlich resample? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.resample.html gibt keine sehr umfassende Antwort. Es gibt ein paar hilfreiche Beispiele, aber die meisten Parameter und ihre möglichen Werte sind nicht sehr gut erklärt. – user1934212

+0

Hier ist das Dokument: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#sparse-resampling – HYRY