2017-09-16 3 views
0

Momentan haben meine Daten Datum wie 01JAN2017, wie mache ich Pandas dies als Datumstyp zu verstehen, ich brauche die Daten im Datumstyp für die Filterung für verschiedene Zeitrahmen. i verwendet, um die untenDatumsangaben für Datumstyp wie DDMMMYYYY

data=pd.read_csv(input_path + 'data.txt',sep='|', parse_dates=['week']) 

aber wenn ich für den Datentyp für Woche überprüft es zeigt immer noch als Objekt.

wäre sehr hilfreich, wenn Sie mich auch auf einige andere Links anweisen kann, so dass ich mehr darüber lesen, könnte dies

+1

Hinweis: 'datetime.strptime'. – tadman

Antwort

2

können Sie datetime.strptime() verwenden, um ein Datum in ein datetime Objekt zu analysieren:

>>> from datetime import datetime 
>>> datetime.strptime("01JAN2017", "%d%b%Y") 
>>> datetime.datetime(2017, 1, 1, 0, 0) 

Nun, um Pandas das Format zu machen erkennen, können Sie ein Datum Parserfunktion hinzufügen:

dateparse = lambda dates: [pd.datetime.strptime(d, "%d%b%Y") for d in dates] 
df = pd.read_csv(infile, parse_dates=["week"], date_parser=dateparse) 
+0

wird dies meine Laufzeit erhöhen, da ich riesige Daten mit 3 Datumsspalten verwenden würde? –

0

In pandasto_datetime Methode ist die natürliche Wahl

In [11]: D = {'Date': '01JAN2017'} 
In [12]: df = pd.DataFrame(D, index=[0]) 
In [13]: df 
Out[13]: 
     Date 
0 01JAN2017 
In [14]: df.dtypes 
Out[14]: 
Date object 
dtype: object 

# Datatime column is read as string 
# use to_datetime to convert non-standard datetime values  

In [15]: df['Date'] = pd.to_datetime(df.Date, format='%d%b%Y') 
In [16]: df.dtypes 
Out[16]: 
Date datetime64[ns] 
dtype: object 
In [17]: df['Date'] 
Out[17]: 
0 2017-01-01 
Name: Date, dtype: datetime64[ns] 

Das Dokument von pd.read_csv empfiehlt eigentlich, dass Sie to_datetime verwenden, wenn das Datetime-Format ist kein Standardformat ist:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

Wenn eine Spalte oder Index enthält Bei einem nicht analysierbaren Datum wird die gesamte Spalte oder der gesamte Index unverändert als Objektdatentyp zurückgegeben. Verwenden Sie für nicht standardmäßiges Datetime-Parsing pd.to_datetime nach pd.read_csv

Verwandte Themen