Ok, donc j'ai un fichier CSV au format:
ValueError: time data 'ame: 0, dtype: ' does not match format '%b %d %H:%M:%S'
Je veux trier par date et heure pour obtenir quelque chose comme:
df = pd.read_csv(file, header=None, engine='c', delimiter=',' )
for index, row in df.iterrows():
result = sorted(df.iterrows(),key=lambda row: datetime.strptime((str(row[1]))[9:24], "%b %d %H:%M:%S"))
print (result)
4 Réponses :
Vous pouvez utiliser parse_dates lors de la lecture du csv pour convertir en objet datetime.
Ex:
import pandas as pd df = pd.read_csv(filename, names=["Date", "Col"], sep="|", parse_dates=["Date"]) df.sort_values(["Date"], inplace=True) print(df)
p>
Essayez cet analyseur de dates:
from dateutil.parser import parse
print(parse(timestr=('Thu Oct 04 21:47:53 GMT+01:00 2018'), dayfirst=False,fuzzy_with_tokens=True)[0])
Vous pouvez utiliser le paramètre infer_datetime_format. Exemple avec vos exemples de données ci-dessous:
>> df['date'] = pd.to_datetime(df.date, infer_datetime_format = True) >> df.sort_values(by = 'date', ascending = True, inplace = True) >> df.date 2 2018-10-01 02:00:44 0 2018-10-04 22:47:53 1 2018-10-07 10:32:11 3 2018-10-23 02:00:44 Name: date, dtype: datetime64[ns]
De documentation pandas.to_datetime () :
infer_datetime_format: booléen, par défaut False
Si True et qu'aucun format n'est donné, essayez de déduire le format du chaînes datetime, et si elle peut être déduite, passez à une méthode plus rapide de les analyser. Dans certains cas, cela peut augmenter la vitesse d'analyse de ~ 5 à 10x.