Python, Pandas: Boolean Indexing Vergleich von DateTimeIndex auf Periode

Betrachten wir ein DataFrame, das 1 Zeile von 2 Werten pro jeden Tag des Monats Januar 2010 enthält:

date_range = pd.date_range(dt(2010,1,1), dt(2010,1,31), freq='1D') df = pd.DataFrame(data = np.random.rand(len(date_range),2), index = date_range) 

Ich möchte die Periodenperiode Period('2009-12-28/2010-01-03', 'W-SUN') , um einen booleschen Indexer zu erstellen, der einen DataFrame zurückgibt, der nur aus diesem Zeitraum enthält. Wie kann ich einen solchen Booleschen Indexer erstellen? – Idealerweise ohne Rückgriff auf die Umwandlung der Periode in einen datetime Bereich.

  • Pandas read_excel () mit mehreren Blättern und bestimmten Spalten
  • Wie generiere ich eine Liste aus einem Pandas DataFrame mit dem Spaltennamen und Spaltenwerten?
  • Warum ändern sich die Pandas der Dataframe-Spaltenreihenfolge automatisch?
  • Python-Pandas-Slice-Dataframe durch mehrere Indexbereiche
  • Was ist der einfachste Weg, um eine gefilterte .tda-Datei mit Pandas zu laden?
  • Pandas read_sql mit Parametern und Wildcard-Operator
  • One Solution collect form web for “Python, Pandas: Boolean Indexing Vergleich von DateTimeIndex auf Periode”

    Lassen Sie die Abfrage pd.Period Objekt sein:

     query = pd.Period('2009-12-28/2010-01-03', 'W-SUN') 

    Sie können dies direkt auf folgende Weise durch den Zugriff auf die start_time und end_time Attribute:

    1) Verwenden von DF.truncate :

     df.truncate(query.start_time, query.end_time) 

    2) Boolescher Indexer verwenden:

     df[(df.index >= query.start_time) & (df.index <= query.end_time)] 

    3) Mit DateTime Indexing, die standardmäßig sowohl die Endpunkte enthält:

     df[query.start_time:query.end_time] 

    Alle diese produzieren

    Bildbeschreibung hier eingeben

    Python ist die beste Programmiersprache der Welt.