2016-12-29 6 views
1

Ich habe Pandas Dataframe in HDFStore mit Index als Epoche Zeit gespeichert. Ich möchte die Daten und Abfrage basierend auf bestimmten Index lesen.HDFStore mit Index in Epochzeit

Zum Beispiel - wenn i Index in datetime64 [ns] anstelle von epoc, ich das Ergebnis als erhalten:

starttime = datetime.datetime(2008,12,22,00,19,55,150000) 

start = pd.Timestamp(stoptime) + pd.Timedelta(1) 

stoptime = datetime.datetime(2008,12,22,00,55,55,180000) 

stop = pd.Timestamp(starttime) + pd.Timedelta(1) 

pd.read_hdf('file.h5',columns=['Data','Qty'],where='index > start & index < stop'] 

Wie ich das gleiche Ergebnis erzielen kann in HDFStore wenn der Index als Epoche Zeit gespeichert ?

Antwort

0

IIUC, sollten Sie Ihre start und stop mal in Epoche umwandeln, um die Abfrage durchführen zu können. Um dies zu tun können Sie:

start_epoch = (start - datetime.datetime(1970,1,1)).total_seconds() 
stop_epoch = (stop - datetime.datetime(1970,1,1)).total_seconds() 

Dann sollten Sie in der Lage sein, die Abfrage mit ihnen durchzuführen. Verwenden Sie Ihre Daten:

In [24]: (start - datetime.datetime(1970,1,1)).total_seconds() 
Out[24]: 1229905195.15 

In [27]: (stop - datetime.datetime(1970,1,1)).total_seconds() 
Out[27]: 1229907355.18 

EDIT: allgemeinere Probleme. Im Falle eines numpy datetime64 Objekt können Sie es zuerst in einfachen datetime konvertieren:

In [16]: abc = np.datetime64('2005-12-27 20:10:10.500400300', 'ns') 

In [17]: a = pd.to_datetime(abc) 

In [18]: a 
Out[18]: Timestamp('2005-12-27 20:10:10.500400300') 

Dann können Sie die obige Methode verwenden.

+0

dies gibt mir nicht das genaue Ergebnis. Gibt es einen einfacheren Weg, die epoc-Zeit zu bekommen? Zum Beispiel: ich habe – Sun

+0

Ich habe abc = np.datetime64 ('2005-12-27 20: 10: 10.500400300', 'ns') ... Wie kann ich die epoc Zeit dafür bekommen? – Sun

+0

Nun, ich habe die Antwort mit ein paar mehr Informationen bearbeitet. Das scheint mir ziemlich einfach, lass es mich wissen, wenn es für dich funktioniert, danke! –

Verwandte Themen