pandas: extrahieren Sie Datum und Uhrzeit aus timestamp

Ich habe eine timestamp Spalte, wo der Zeitstempel im folgenden format

2016-06-16T21:35:17.098+01:00

Möchte ich extrahieren Sie Datum und Zeit aus. Ich habe Folgendes getan:

import datetime as dt

df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x)))

df['dates'] = df['timestamp'].dt.date

Dieser arbeitete für eine Weile. Aber plötzlich geht es nicht.

Wenn ich wieder df['dates'] = df['timestamp'].dt.date bekomme ich die folgende Fehlermeldung

Can only use .dt accessor with datetimelike values

Zum Glück habe ich die Daten gespeichert haben Rahmen mit dates in der csv aber ich will jetzt erstellen Sie eine weitere Spalte time im format 23:00:00.051

BEARBEITEN

Aus der raw-Datei (15 Millionen samples), die timestamp Spalte sieht wie folgt aus (erste 5 Proben):

            timestamp

0           2016-06-13T00:00:00.051+01:00
1           2016-06-13T00:00:00.718+01:00
2           2016-06-13T00:00:00.985+01:00
3           2016-06-13T00:00:02.431+01:00
4           2016-06-13T00:00:02.737+01:00

Nachdem Sie den folgenden Befehl

df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x)))

den timestamp Spalte sieht aus wie mit dtype als "dtype": datetime64[ns]

0    2016-06-12 23:00:00.051
1    2016-06-12 23:00:00.718
2    2016-06-12 23:00:00.985
3    2016-06-12 23:00:02.431
4    2016-06-12 23:00:02.737

Dann endlich

df['dates'] = df['timestamp'].dt.date

0           2016-06-12
1           2016-06-12
2           2016-06-12
3           2016-06-12
4           2016-06-12

EDIT 2

Den Fehler gefunden. Ich hatte gereinigt, die Daten gespeichert und die Daten-Frames in eine csv-Datei, so dass ich nicht haben, um die Reinigung wieder. Wenn ich lese die csv, die timestamp - dtype änderungen zu widersprechen. Nun, wie kann ich dieses Problem beheben?

nun, es bedeutet, dass Sie haben einige duff-Werte, so können Sie erzwingen, dass diese duff-Werte NaT: df['timestamp'] = pd.to_datetime(df['timestamp'], errors='coerce') dann können Sie loszuwerden, diese Werte mit dropna und dann können Sie anrufen dt.date wie vorher
df.timestamp.isnull().sum() gibt 0 zurück
Sorry, aber es sei denn, Sie posten Sie Ihre raw-Daten-und code-Fehler, dann wird dies eine hypothetische Haltung übung, die unnötig Zeit
OT, statt df['timestamp'].apply(lambda x : pd.to_datetime(str(x))) betrachten pd.to_datetime(df['timestamp']).
Um die Geschwindigkeit der Konvertierung, legen Sie das format für Ihren datetime strings --- siehe diese Frage.

InformationsquelleAutor chintan s | 2016-09-23

Schreibe einen Kommentar