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: 1366
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: 17753
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: 13111
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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