2016-07-15 12 views
3

Ich habe einige Objekte, die Daten zugeordnet sind. Ich möchte Objekte für einen bestimmten Zeitraum sowie für ein einzelnes Datum abrufen können. Was ist die beste Datenstruktur in Python, um dies zu tun?Was ist die beste Datenstruktur zum Speichern von Objekten, die nach Datum indiziert sind?

Ich glaube in einigen Sprachen würde dies mit einer "Kurve" erreicht werden.

+0

Ich glaube, Sie suchen die Python- Entsprechung von Java [TreeMap] (http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html). Etwas wie [das] (http://stackoverflow.com/q/6886294/1639625)? –

Antwort

3

Sie könnten einen verwenden pandasDataFrame:

import pandas as pd, numpy as np 

df = pd.DataFrame(np.random.random((10,1))) 
df['date'] = pd.date_range('2016-7-1', periods=10, freq='D') 

Für einen Datumsbereich:

>>> df[(df['date'] > '2016-7-3') & (df['date'] <= '2016-7-10')] 
      0  date 
3 0.322654 2016-07-04 
4 0.360684 2016-07-05 
5 0.298821 2016-07-06 
6 0.292097 2016-07-07 
7 0.052085 2016-07-08 
8 0.620535 2016-07-09 
9 0.902022 2016-07-10 

Für ein gegebenes Datum:

>>> df[df['date'] == '2016-7-3'] 
      0  date 
2 0.191553 2016-07-03 
1

Ein Wörterbuch würde funktionieren. datetime Objekte können als Wörterbuchschlüssel verwendet und in Bereichen miteinander verglichen werden.

+0

Dies funktioniert jedoch nicht, wenn das Datum, das Sie suchen möchten, zwischen zwei Daten im Diktat liegt. –

+0

Ich nahm an, dass das Plakat fragte: "Sag mir, ob das gespeicherte Datum X zwischen beliebigen Daten Y und Z liegt, nicht" sag mir, ob ein beliebiges Datum X zwischen den gespeicherten Daten Y und Z liegt. Aber selbst dann würde es funktionieren, Sie müssten nur jedes eindeutige Datenpaar im Diktat mit dem Zieldatum vergleichen. –

Verwandte Themen