Seite 1 von 1

Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 13:29
von OWT
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)

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 13:33
von ThomasL
Schon mal einen Blick in die Pandas Doku geworfen?

https://pandas.pydata.org/pandas-docs/s ... etime.html

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 13:59
von OWT
ja, stehts dort eh drinnen?

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 14:05
von Sirius3
Ja, steht dort drin!

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 14:24
von OWT
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".

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 14:48
von __blackjack__
@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.

Re: Pandas - Zeitspalte definieren

Verfasst: Montag 4. Juli 2022, 15:07
von OWT
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