Pandas - Zeitspalte definieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
OWT
User
Beiträge: 29
Registriert: Montag 20. Juni 2022, 10:45

Hallo Zusammen

Es liegt ein pandas DataFrame mit diversen Spalten vor. Eine davon ist die Zeit in Millisekunden.
Wie man per For-Schleife alle nach einander macht, ist verständlich. Ich suche einen Weg, die Spalte als ganzes zu verwandeln.

Code: Alles auswählen

#Beispiel Code
zeitdaten = [1656072648492, 1656072648492, 1656072648492,1656072648492,1656072650492,1656072948498]
bsp = pd.DataFrame(data=zeitdaten)

#Einträge einzeln Umrechnen
erster_eintrag= bsp[0].iloc[0]
in_sekunden = erster_eintrag / 1000
als_zeit = datetime.datetime.fromtimestamp(in_sekunden)
Benutzeravatar
ThomasL
User
Beiträge: 1385
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Schon mal einen Blick in die Pandas Doku geworfen?

https://pandas.pydata.org/pandas-docs/s ... etime.html
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
OWT
User
Beiträge: 29
Registriert: Montag 20. Juni 2022, 10:45

ja, stehts dort eh drinnen?
Sirius3
User
Beiträge: 18375
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja, steht dort drin!
OWT
User
Beiträge: 29
Registriert: Montag 20. Juni 2022, 10:45

ok, danke für die Hilfe. dann ist ja alles klar.
pandas.to_datetime(arg, ...
arg: int, float, str, datetime, list, tuple, 1-d array, Series, DataFrame/dict-like
The object to convert to a datetime. If a DataFrame is provided, the method expects minimally the following columns: "year", "month", "day".
Benutzeravatar
__blackjack__
User
Beiträge: 14336
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@OWT: Da das „minimally“ in Deinem Zitat hervorgehoben ist, im Original aber nicht: Das hat nichts mit *Deinen* Daten zu tun. Der Satz fängt mit einem ``if`` an. Diesen Fall hast Du nicht.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
OWT
User
Beiträge: 29
Registriert: Montag 20. Juni 2022, 10:45

Das ist doch ein DataFrame? Ist es nur ein Stück eines DataFrames? Vermutlich war das der Denkfehler. Wenn ich die Spalte genauer rufe, kommst richtige raus.

Antwort:
mit der "pd.to_datetime" Funktion kann Pandas die Zeiten direkt umrechnen bzw. definieren. Man kann zusätzlich die Einheit als 'ms' definiert, dann kommt es mit den Millisekunden klar. Beispiel anbei:

Code: Alles auswählen

import pandas as pd
daten = [[1656072648492,'a','kuh'],[1556072648492,'b','kalb'],[1656072648492,'b','kuh'],[1656072648492,'c','kalb'],[1656072650492,'d','schwein'],[1656072948498,'e','schwein']]
bsp = pd.DataFrame(data=daten, columns=['Zeit','Buchstabe','viech'])
bsp.index = pd.to_datetime(bsp['Zeit'], unit='ms')
bsp = bsp.drop(columns='Zeit')
viel Spass, schönen Feierabend und danke an alle, die übers Problem nachgedacht haben
Antworten