2016-11-23 7 views
2

Ich versuche, Datum und Uhrzeit Spalten einer CSV-Datei zu kombinieren und sie in Zeitstempel mit Pandas konvertieren. HierKombinieren von Spalten mit Pandas

ist ein Beispiel für meine CSV-Datei, wenn sie in einen Datenrahmen lesen

Dataframe after reading

Id  Station  Month  Parameter Date  From  To 
1.0 ANANDVIHAR  Dec   ?PM2.5  2015-12-01 ?00:00:00 ?00:59:00 

der folgende Code: -

df['DateTime'] = df.apply(lambda row: datetime.datetime.strptime(row['Date']+ ':' + row['From'], '%Y.%m.%d:%H:%M:%S'), axis=1) 

die folgenden Fehler geben: -

Traceback (most recent call last): 

    File "project101.py", line 36, in <module> 
    df['DateTime'] = df.apply(lambda row: datetime.datetime.strptime(row['Date']+ ':' + row['From'], '%Y.%m.%d:%H:%M:%S'), axis=1) 

    File "c:\Python27\lib\site-packages\pandas\core\frame.py", line 4133, in apply 
    return self._apply_standard(f, axis, reduce=reduce) 

File "c:\Python27\lib\site-packages\pandas\core\frame.py", line 4229, in _apply_standard 
    results[i] = func(v) 

    File "project101.py", line 36, in <lambda> 
    df['DateTime'] = df.apply(lambda row: datetime.datetime.strptime(row['Date']+ ':' + row['From'], '%Y.%m.%d:%H:%M:%S'), axis=1) 

    File "c:\Python27\lib\_strptime.py", line 332, in _strptime 
    (data_string, format)) 

ValueError: ("time data '2015-12-01:\\xa000:00:00' does not match format '%Y.%m.%d:%H:%M:%S'", u'occurred at index 0') 
+0

Ihre Frage Aussehen alles durcheinander. Bitte verwenden Sie ein korrektes Format. – burhan

Antwort

1

Sie können einfach tun:

df['DateTime'] = pd.to_datetime(df['Date'].str.cat(df['From'], sep=" "), 
           format='%Y-%m-%d \\xa%H:%M:%S', errors='coerce') 

Die '\\xa' im Formatspezifizierer wird sich um die Fragezeichen kümmern. Diese Marken sind für falsch interpretieren wörtlich, die wahrscheinlich wie '\\xa'

+0

Ich versuchte die Lösung, aber alle Werte in der Spalte DateTime sind "NaT" – Niteesh

+0

Versuchen Sie, mit dem Format zu spielen, bis Sie es richtig bekommen. – Kartik

+0

Danke kartik Ich habe die Lösung endlich – Niteesh

0

Sie können die Funktion pandas.Series.str.cat verwenden.

folgenden Code gibt Ihnen eine grundlegende Idee dazu:

>>> Series(['a', 'b', 'c']).str.cat(['A', 'B', 'C'], sep=',') 
0 a,A 
1 b,B 
2 c,C 
dtype: object 

Für weitere Informationen, bitte überprüfen Sie dies:

http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.Series.str.cat.html

Hope this löst Ihr Problem ...

+0

Können Sie das Bild des gedruckten Datenrahmens sehen? Die Datumsspalten Von und Bis enthalten Fragezeichen vor Daten. Wie kann ich sie entfernen – Niteesh

+0

Dank sansingh die Pandas Referenz half – Niteesh

0

sieht schließlich ich eine Lösung hatte ich die Fragezeichen vor der Datumsspalte abgezogen und angewandten to_datetime() auf die Säule des Datenrahmen

 
df['From'] = df['From'].map(lambda x: str(x)[1:]) 
df['FromTime'] = pd.to_datetime(df['Date'].str.cat(df['From'], sep=" "),format='%Y-%m-%d %H:%M:%S', errors='coerce') 
Verwandte Themen