2016-07-13 5 views
2

Ich habe ein Datetime-Array mit Stunden-, Minuten- und Sekundeninformationen. Ich möchte die Minuten- und Sekundeninformation entfernen und die Stunde auf die nächste Stunde umstellen.python datetime minute und second Informationen entfernen

heißt peak_interval

array([datetime.datetime(2010, 12, 13, 6, 0), 
     datetime.datetime(2011, 1, 12, 7, 0), 
     datetime.datetime(2011, 3, 23, 16, 45), 
     datetime.datetime(2011, 4, 19, 17, 15)], dtype=object) 

ich folgendes erhalten möchten:

peak_interval 
array([datetime.datetime(2010, 12, 13, 7, 0), 
     datetime.datetime(2011, 1, 12, 8, 0), 
     datetime.datetime(2011, 3, 23, 17, 0), 
     datetime.datetime(2011, 4, 19, 18, 0)], dtype=object) 

Ich kann eine Art von for-Schleife schreiben, aber ich versuche, einige intelligente Methode zu verwenden, wenn möglich.

+0

Dies kann Ihnen helfen: http://stackoverflow.com/questions/3743222/how-do-i-convert-datetime-to-date-in-python Beachten Sie jedoch, dass das Ergebnis in diesem Fall wäre ein Datumsobjekt. –

Antwort

6

Schnell datetime.datetime.replace

old_date = datetime.datetime(2011, 3, 23, 16, 45) 
new_date = old_date.replace(minute=0, second=0) + datetime.timedelta(hours=1) 

Bearbeiten mit wenigen Felder ändern können: Ich möchte nur, dass die other answer Arbeiten weisen darauf hin, ist auch vollständiger und kann als sauberer angesehen werden.

3

Eine Option ist timedelta von datetime zu verwenden:

import datetime 
import numpy as np 
def reset(dt): 
    return dt + datetime.timedelta(hours = 1, minutes = -dt.minute, seconds = -dt.second) 

np.vectorize(reset)(peak_interval) 

# array([datetime.datetime(2010, 12, 13, 7, 0), 
#  datetime.datetime(2011, 1, 12, 8, 0), 
#  datetime.datetime(2011, 3, 23, 17, 0), 
#  datetime.datetime(2011, 4, 19, 18, 0)], dtype=object)