Pandas Dataframe mit Unixtime in Datum umwandeln

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
py-noob
User
Beiträge: 6
Registriert: Donnerstag 11. Juli 2019, 18:55

Hallo, ich habe ein Pandas Dataframe mit Unix Timestamps und möchte eine neue Spalte mit dem entsprechenden Datum hinzufügen.
1380735000 96,9 8,5 6
1380755700 92,0 0,9 1
1380758400 90,1 1,0 2
1380762900 90,1 3,4 10
1380790800 84,0 8,1 4
1380791700 85,0 7,7 5
1380795300 82,8 5,9 1
Ein einzelnen Eintrag kann ich mit

Code: Alles auswählen

datetime.utcfromtimestamp(df.iloc[1,0]).strftime('%Y-%m-%d %H:%M') 
umwandeln.
Wenn ich jedoch versuche eine neue Spalte mit den aus den Timestamps abgeleiteten Datum zu erzeugen

Code: Alles auswählen

df['neu'] = datetime.utcfromtimestamp(df.iloc[:,0]).strftime('%Y-%m-%d %H:%M')
bekomme ich die Fehlermeldung
cannot convert the series to <class 'int'>
Kann mir jemand verraten, wo das Problem liegt? Ich würde mal raten, dass es was mit der Pandas Series die df.iloc[1,0] übergibt zu tun hat?
Laut googlesuche kann bei der Fehlermeldung die Verwendung von astype helfen, was jedoch in meinem Fall nicht erfolgreich war.
Vermutlich ist die Lösung total simpel, aber ich stehe gerade ein wenig auf dem Schlauch.

Schonmal vielen Dank im Voraus!
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

`datetime.utcfromtimestamp` kann nur mit einzelnen Zahlen umgehen, nicht mit pandas-Series.
Dazu braucht es pandas.to_datetime:

Code: Alles auswählen

df['neu'] = pd.to_datetime(df['alt'], unit='s')
py-noob
User
Beiträge: 6
Registriert: Donnerstag 11. Juli 2019, 18:55

Sirius3 hat geschrieben: Sonntag 29. August 2021, 13:35 `datetime.utcfromtimestamp` kann nur mit einzelnen Zahlen umgehen, nicht mit pandas-Series.
Dazu braucht es pandas.to_datetime:
Danke für deine Antwort! Gegenüber meiner Notlösung mit einer Schleife jedes Element zu durchlaufen, ist das ca. 1000x schneller (keine Übertreibung).
Da stellt sich mir aber die Frage, was man macht, wenn eine benötigte Funktion nicht mit einem Dataframe/Array umgehen kann und es auch keine Alternative in der Pandas-Library gibt.
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

Ohne zu wissen, was denn das für eine Funktion ist, ist es müßig, sich darüber Gedanken zu machen.
py-noob
User
Beiträge: 6
Registriert: Donnerstag 11. Juli 2019, 18:55

Naja, ich hatte die Hoffnung, dass klügere Personen schon eine Methode gefunden haben wie sich alle Funktionen vektorisieren lassen
Antworten