2016-06-20 8 views
2

Ich habe eine CSV-Ausgabe von thermischen Simulationen, die ich Datenanalyse durchführen möchte, mit Pandas.Konvertieren/Analysieren von Spaltenstrings in Datetime-Werte - Pandas

Nachdem ich die CSV in einen Pandas Datenframe importiert habe, möchte ich den Zeitstempel manipulieren und ihn als solchen importieren.

Das Startformat ist das folgende (beginnt mit einem Leerzeichen, hat US-Datenformat und Jahr fehlt).

' 05/01 01:00:00' 
    ' 05/01 02:00:00' 
    ' 05/01 03:00:00' 
    ' 05/01 04:00:00' 
    ' 05/01 05:00:00' 

Ich war adviced es mit einer Loop-Funktion zu adressieren, die ich wie folgt geschrieben:

timestamp = [] 
for ns in raw_datetime: 
    #timestamp.append(ns[5:7] + '.' + ns[2:4] + '_' + ns[9:11] + '00h') 
    timestamp.append('2016' + '/' + ns[2:4] + '/' + ns[5:7] + '_' + ns[9:11] + ':00') 

wo

raw_datetime = df[' Date/Time'] #original data column 

Dies funktioniert gut und gibt das Datetime-Format ich will.

['2016/05/01_01:00', '2016/05/01_02:00', '2016/05/01_03:00', '2016/05/01_04:00'] 

Allerdings scheint dies nicht verwendet werden durch pd.to_datetime Funktion, wie eine Liste zu erfordern scheint eher als eine Reihe (?).

stieß ich auf das Konzept der Analyse und bekannten Funktionen wuch wie:

raw_datetime.str.extract('string', expand=True) 

aber ich bin nicht sicher, wie ich das tun konnte, während Monat und Tag Spiegeln und das Hinzufügen Jahr 2016 Informationen, die nicht vorhanden ist in den Rohdaten.

Danke!

Bearbeiten: Code unten hinzugefügt N.B. nativen Format ist '05/01 01.00.00', dh: Doppel Raum, Monat, Tag, Doppelraum, hh, mm, ss)]

erster Versuch

df = pd.read_csv('./SimResults.csv') 
a = pd.to_datetime(df[' Date/Time'], format=' %m/%d %H:%M:%s') 

Zweiter Versuch:

df = pd.read_csv('./SimResults.csv') 
raw_datetime = df[' Date/Time'].str.lstrip(' ') 
raw_datetime = ('2016/') + raw_datetime 
b = pd.to_datetime(raw_datetime, format='%Y/%m/%d %H:%M:%S') 
+0

es auch auf einer Reihe arbeiten sollte ' pd.to_datetime (df ['your_new_col']) 'sollte funktionieren – EdChum

+0

Wenn Sie die CSV-Datei lesen verwenden Sie' parse_dates = ['Date/Time'] ', dann wird automatisch' 2016' an das Datum angehängt. – shivsn

+0

Entschuldigung Jungs, aber nichts davon scheint zu funktionieren! – Andreuccio

Antwort

2

Sie sollten Ihr Format to_datetime Funktion angeben, weil es nicht Format Standard:

pd.to_datetime(x, format='%Y/%m/%d_%H:%M') 
+0

Ich habe das Format von meiner Funktion 'to_datetime' angegeben, jedoch erhalte ich den Fehler: "_time data '05/01 01:00:00' stimmt nicht mit '% Y /% m /% d_% H überein:% M '_ Die Zeichenfolge muss manipuliert werden, damit sie vom Befehl' to_datetime 'gelesen werden kann, oder? – Andreuccio

+0

Nein, keine weiteren Manipulationen erforderlich. Vielleicht ein falsches Format? Sie können die Optionen hier überprüfen: https: // docs .python.org/2/library/datetime.html # strftime-und-strptime-verhalten –

+0

Eugene, es scheint nicht zu funktionieren, ich habe angst.Ich habe so viele Möglichkeiten ausprobiert und ich weiß nicht, was ich sonst tun soll Würdest du gerne meinen Code überprüfen? – Andreuccio