Ich habe dieses Format als Objekt 2020-11-18 10: 36: 29.772234 +0000 UTC, möchte in Datum Uhrzeit konvertieren

Nov 23 2020

2020-11-20 23:07:59.381081 +0000 UTC

Ich lese eine CSV-Datei mit Pandas und in einem Datenrahmen befindet sich eine Zeitstempelspalte, die ein Objekt ist. Ich konnte weder in datetime konvertieren noch die +0000 UTC in das Format lesen

Ich habe folgendes versucht:

datetimeObj = datetime.strptime('2020-11-21 22:16:25.389601 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %Z')

aber das% Z gibt mir Fehler. Irgendwelche Ratschläge für einen Anfänger in der Python & Pandas Welt?

Antworten

3 LorenaGil Nov 23 2020 at 04:10

Sie müssen auch% z vor% Z hinzufügen.

  • % z bezieht sich auf den Versatz in der Form + HHMM oder -HHMM.
  • % Z bezieht sich auf den Namen der Zeitzone.

Versuche dies:

datetime_object = datetime.strptime('2020-11-20 23:07:59.381081 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %z %Z')
1 MrFuppes Nov 23 2020 at 17:31

Angenommen, Sie haben Datums- / Uhrzeitzeichenfolgen in diesem Format in einem Pandas-DataFrame. Ich würde vorschlagen, das zu entfernen, +0000da pd.to_datetimees nicht analysiert wird +0000und UTC gleichzeitig .

import pandas as pd

df = pd.DataFrame({'timestamp':["2020-11-20 23:07:59.381081 +0000 UTC"]})

df['datetime'] = pd.to_datetime(df['timestamp'].str.replace(" +0000", "", regex=False))

# df['datetime']
# 0   2020-11-20 23:07:59.381081+00:00
# Name: datetime, dtype: datetime64[ns, UTC]

Warum nicht einfach das ausziehen UTC? Im Gegensatz zu einem UTC-Offset von +0000 ist dies eindeutig. +0000 kann auch aus einer Zeitzone stammen, in der zum Zeitpunkt des Zeitstempels zufällig UTC + 0 vorhanden ist.