Ich suche nach einer Möglichkeit, Datetime-Objekte in dezimales Jahr zu konvertieren. Unten ist ein Beispiel
%Vor%Wie konvertiere ich datetime.datetime (2007, 4, 14, 11, 42, 50) in Dezimaljahre? Von diesem Format TT / MM / JJJJ bis zu dieser Art von Format yyyy.yyyy
Demo:
%Vor%Diese Methode ist wahrscheinlich genau innerhalb der Sekunde (oder der Stunde, wenn die Sommerzeit oder andere seltsame regionale Dinge in Kraft sind). Es funktioniert auch korrekt während der Schaltjahre. Wenn Sie eine drastische Auflösung benötigen (z. B. aufgrund von Änderungen in der Erdrotation), sollten Sie besser einen Netzdienst abfragen.
Ich nehme an, dass Sie dies verwenden, um Datetime-Werte zu vergleichen. Verwenden Sie dazu die Objekte timedelta , anstatt das Rad neu zu instanziieren.
Beispiel:
%Vor% Wenn Sie aus irgendeinem Grund Dezimaljahre benötigen, können Sie mit datetime
objekts Methode strftime()
eine ganzzahlige Darstellung des Tages des Jahres angeben, wenn Sie nach% gefragt werden. co_de% - wenn Sie das suchen, sehen Sie unten ein einfaches Beispiel (nur bei 1-Tages-Auflösung):
Dies ist ein etwas einfacherer Weg als die anderen Lösungen:
%Vor%Beachten Sie, dass dies den Bruch basierend auf dem Beginn des Tages berechnet, so dass der 31. Dezember 0,997 und nicht 1,0 ist.
Überrascht, niemand hat dies erwähnt ... aber die datetime.timedelta
-Objekte, die sich aus dem Subtrahieren von datetime.datetime
-Objekten ergeben, haben eine Divisions-Methode. Sie können also die einfache Funktion
wobei die Division zwischen datetime.timedelta
-Objekten liegt.
Es ist möglich, das Dezimaldatum zu berechnen, indem man das julianische Datum der Pandas und die folgenden Formeln verwendet.
Wenn Ihr Pandas-Datenframe einen Index hat, der Datum-Uhrzeit ist:
%Vor%decimal_date ist eine Folge Ihres Datums (in demselben TZ wie der Dataframe-Index) in Form von etwa 2007.123452.
Nach der Implementierung der akzeptierten Lösung hatte ich die Offenbarung, dass diese moderne Pandas-Version identisch und viel einfacher ist:
%Vor%Muss für einen Datums- / Zeitindex Pandas-Datenrahmen verwendet werden. Das Hinzufügen dieser Lösung wird oben in meiner Google-Suche für dieses Problem angezeigt.