2016-08-09 96 views
2

Ich versuche, Daten zu analysieren, während ich meine Daten aus der CVS-Datei lesen. Der Befehl, den ich verwende, istanalysieren Datum-Zeit beim Lesen 'CSV' Datei mit Pandas

Und es arbeitet an meinen Dateien im Allgemeinen. Aber ich habe einige Datensätze, die Vielfalt in Datumsformaten hat. Ich meine, es hat Datumsformat ist wie das (09/20/15 09:59​), während es ein anderes Format in anderen Zeilen hat, ist das (2015-09-20 10:22:01.013​) in der gleichen Datei. Und der Befehl, den ich oben geschrieben habe, funktioniert bei diesen Dateien nicht. Es funktioniert, wenn ich (parse_dates = ['date']) lösche, aber diesmal kann ich die Datumsspalte nicht als datetime Format verwenden, es liest diese Spalte als Integer. Ich würde schätzen, dass jeder das beantworten könnte!

+0

versuchen Sie es so: 'df = pd.read_csv ('/ Benutzer/n ....', Namen = Namen); df ['Datum'] = pd.to_datetime (df ['Datum']) ' – MaxU

Antwort

2

So:

df = pd.read_csv(file, names=names) 
df['date'] = pd.to_datetime(df['date']) 
3

Pandas read_csvdate_parser akzeptiert Argument, das Sie Ihr eigenes Datum Parsing-Funktion definieren können. So zum Beispiel in Ihrem Fall, dass Sie 2 verschiedene Datums-Zeitformate haben, können Sie einfach tun:

import datetime 

def date_parser(d): 
    try: 
     d = datetime.datetime.strptime("format 1") 
    except ValueError: 
     try: 
      d = datetime.datetime.strptime("format 2") 
     except: 
      # both formats not match, do something about it 
    return d 

df = pd.read_csv('/Users/n....', 
       names=names, 
       parse_dates=['date1', 'date2']), 
       date_parser=date_parser) 

Sie können dann jene Daten in verschiedenen Formaten in diesen Spalten analysieren.