Transformation date française en date anglaise

a marqué ce sujet comme résolu.

Hello à tous,

Savez-vous comment transformer une date française en date anglaise ou bien dire à pandas que ma date est en français ?

Mes dates sont de type "objet" je les ai transformé en date via pd.to_datetime Le problème est que je récupère ensuite le min de la date mais cela ne me renvoit pas à la bonne date car le mois et le jour ont été inversé.

Je suppose que cela vient de la transformation de la date au format date en anglais.

Savez-vous comment je peux procéder pour récupérer le vrai min de la date ?

Merci beaucoup,

La date est importé ainsi "09/12/2019". J’ai transformé le format ainsi : pd.to_datetime(df['date']). Seulement to_datetime prend 09 comme le mois et 12 comme le jour. Cela transforme donc les dates ainsi "12/09/2019".

J’ai essayé de forcer le format en indiquant pd.to_datetime(df['date'] , format=’%y%d%m’) mais cela donne une erreur : File "pandas_libs\tslibs\conversion.pyx", line 350, in pandas._libs.tslibs.conversion.datetime_to_datetime64 TypeError: Unrecognized value type: <class 'str’>

Pour donner un contexte, j’ai une colonne avec des id une seconde avec des dates et je souhaite récupérer la date la plus petite pour chaque id.

Merci beaucoup,

Je suis pas sûr de comprendre, si tu as une date du genre 09/12/2019 où le premier nombre est le jour, pourquoi mettre '%y%d%m' comme format ? o_O

Les deux solutions suivantes fonctionnent chez moi :

pd.to_datetime('09/12/2019', dayfirst=True)
pd.to_datetime('09/12/2019', format='%d/%m/%Y')
+0 -0

En effet, la ligne de commande ci-dessous est juste :

pd.to_datetime(’14/09/2020’, dayfirst=True)>pd.to_datetime(’11/05/2020’, dayfirst=True) True

Mais alors pourquoi en cherchant le max le résultat je n’ai pas le max ?

max(df8['date_debut_saisies_format_date']) Timestamp(’2020–11–05 00:00:00’)

J’ai bien dans mon fichier des dates au dessus du 11/05/2020.

Une idée ? :)

Il va falloir nous aider à t’aider, en particulier nous donner le code (cite mon message précédent pour voir comment le mettre en forme) et le csv que tu utilises (ou un morceau suffisant pour reproduire le problème).

+0 -0

Voici le code dans la console (je n’arrive pas à le mettre au bon format pour ce formum):

dftest = pd.read_csv('Date.csv', sep = ';', encoding = "utf-8")`

dftest

date
0   01/04/2019
1   14/09/2020
2   14/09/2020
3   14/09/2020
4   22/07/2019
5   08/07/2019
6   08/07/2019
7   02/09/2019
8   20/01/2020
9   22/06/2020
10  25/05/2020
11  25/05/2020
12  08/06/2020
13  22/06/2020
14  27/04/2020
15  20/04/2020
16  11/05/2020
x1 = pd.to_datetime(dftest['date'])
x1.max()
Timestamp('2020-11-05 00:00:00')
dftest['date'].max()
'27/04/2020'

La date max qui devrait ressortir est le 14/09/2020 mais aucune des 2 fonctions max utilisé ne me remonte la bonne date.

Dites moi si vous avez besoin du fichier csv.

Merci bcp pour votre aide,

+0 -0

Là c’est juste complètement illisible en l’état…

Les blocs de code sont délimités par des backticks, pas par des guillemets.

Copie colle les 3 lignes suivantes

```python
# ton code ici
```

puis colle ton code au milieu. Sinon on ne va pas s’en sortir, ton message est complètement illisible…


EDIT : merci pour l’édition. Ben… Il faut prendre en compte ce qu’on disait au début du sujet avec l’argument dayfirst pour lire les dates correctement…

x1 = pd.to_datetime(dftest['date'], dayfirst=True)
x1.max()  # Timestamp('2020-09-14 00:00:00')

La date maximum est bien le 14 Septembre 2020 comme attendu.

+1 -0

Je retente ma chance ;)

 dftest = pd.read_csv('Date.csv', sep = ';', encoding = "utf-8")
 dftest
 x1 = pd.to_datetime(dftest['date'])
 x1.max()
 dftest['date'].max()

La ligne x1.max() me donne la dernière date de la liste. La ligne dftest['date'].max() me donne une date qui n’est pas la plus récente et donc pas le max.

Voir mon édit dans mon message précédent. Par ailleurs, dftest['date'].max() en soi ne peut pas marcher tant que tes dates sont dans ce format texte. Il faut les transformer en Timestamp d’abord.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte