1
votes

Python trie le CSV par date et heure

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)


0 commentaires

4 Réponses :


2
votes

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>


0 commentaires

1
votes

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])


0 commentaires

1
votes

utilisez strftime avant de trier les données < pré> XXX


0 commentaires

2
votes

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.


0 commentaires