Mam ten format jako obiekt 2020-11-18 10: 36: 29.772234 +0000 UTC, chcę przekonwertować na datę i godzinę
2020-11-20 23:07:59.381081 +0000 UTC
Czytam plik csv z pandami i do ramki danych znajduje się kolumna sygnatury czasowej, która jest obiektem. Nie byłem w stanie przekonwertować na datetime ani odczytać +0000 UTC do formatu
Próbowałem następujących rzeczy:
datetimeObj = datetime.strptime('2020-11-21 22:16:25.389601 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %Z')
ale% Z daje mi błąd. Masz jakąś radę dla początkującego w świecie Pythona i Pand?
Odpowiedzi
Musisz dodać także% z przed% Z.
- % z odnosi się do przesunięcia w postaci + HHMM lub -HHMM.
- % Z odwołuje się do nazwy strefy czasowej.
Spróbuj tego:
datetime_object = datetime.strptime('2020-11-20 23:07:59.381081 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %z %Z')
Zakładając, że masz ciągi daty i godziny w tym formacie w DataFrame pandy, sugerowałbym usunięcie, +0000
ponieważ pd.to_datetime
nie będzie analizować +0000
i UTC
w tym samym czasie .
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]
Dlaczego po prostu nie rozebrać UTC
? W przeciwieństwie do przesunięcia UTC +0000, jest to jednoznaczne. +0000 może również pochodzić ze strefy czasowej, która akurat ma UTC + 0 w czasie reprezentowanym przez znacznik czasu.