python, wie Datetime-Daten in Dezimaljahre konvertiert werden

7

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

    
user739807 23.06.2011, 09:03
quelle

6 Antworten

18
%Vor%

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.

    
ninjagecko 23.06.2011, 09:23
quelle
2

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):

%Vor%     
Kimvais 23.06.2011 09:16
quelle
0

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.

    
Matthias Fripp 30.04.2016 01:59
quelle
0

Ü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

verwenden %Vor%

wobei die Division zwischen datetime.timedelta -Objekten liegt.

    
Luke Davis 23.02.2017 19:15
quelle
0

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.

Angepasst von diesem Beitrag.

    
EHB 30.01.2018 03:30
quelle
0

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.

    
EHB 28.02.2018 03:00
quelle

Tags und Links