2017-09-16 5 views
0

Actuellement, mes données ont la date 01JAN2017, comment faire pour que les pandas comprennent cela comme type de date, j'ai besoin que les données soient dans le type de date pour le filtrer pour différentes périodes. i utilisé le ci-dessousParse dates pour datetype en tant que DDMMMYYYY

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

mais quand j'ai vérifié pour le type de données pour la semaine, il apparaît toujours comme objet.

serait très utile si vous pouvez me diriger vers d'autres liens pour que je puisse lire plus sur ce

+1

Indice: 'datetime.strptime'. – tadman

Répondre

2

Vous pouvez utiliser datetime.strptime() pour analyser une chaîne de date dans un objet datetime:

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

maintenant, pour faire reconnaître le format pandas géants, vous pouvez ajouter une fonction d'analyseur de date:

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

cela augmentera-t-il mon exécution car j'utiliserais des données énormes avec 3 colonnes de date? –

0

en pandasto_datetime méthode est le choix naturel

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] 

Le document de pd.read_csv recommande en fait que vous utilisez to_datetime lorsque le format datetime est pas un format standard:

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

Si une colonne ou index contient une date non modifiable, la colonne entière ou l'index sera retourné inchangé comme un type de données d'objet. Pour l'analyse de datetime non standard, utilisez pd.to_datetime après pd.read_csv