IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

ValueError en convertissant Type Object en Date


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 16
    Par défaut ValueError en convertissant Type Object en Date
    Bonjour Cher tous.

    j'ai un Dataframe avec une colonne date dont le type est object.

    elle est au format 22/03/25 ( jj/mm/aa)

    je veux la convertir en Type date.

    mais je rencontre une erreur ValueError

    Voici le code que j'ai utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df_copy['Date'] = pd.to_datetime(df_copy['Date'], format='%Y-%m-%d')
    cela me renvoi l'erreur suvante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    ValueError                                Traceback (most recent call last)
    Cell In[10], line 1
    ----> 1 df_copy['Date'] = pd.to_datetime(df_copy['Date'], format='%Y-%m-%d')
          2 df_copy['N° Pièce'] = df_copy['N° Pièce'].astype('str')
          3 df_copy['Total HT'] = df_copy['Total HT'].astype('int64')
     
    File D:\Projets Pycharm\.venv\Lib\site-packages\pandas\core\tools\datetimes.py:1068, in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
       1066             result = arg.tz_localize("utc")
       1067 elif isinstance(arg, ABCSeries):
    -> 1068     cache_array = _maybe_cache(arg, format, cache, convert_listlike)
       1069     if not cache_array.empty:
       1070         result = arg.map(cache_array)
     
    File D:\Projets Pycharm\.venv\Lib\site-packages\pandas\core\tools\datetimes.py:249, in _maybe_cache(arg, format, cache, convert_listlike)
        247 unique_dates = unique(arg)
        248 if len(unique_dates) < len(arg):
    --> 249     cache_dates = convert_listlike(unique_dates, format)
        250     # GH#45319
        251     try:
     
    File D:\Projets Pycharm\.venv\Lib\site-packages\pandas\core\tools\datetimes.py:435, in _convert_listlike_datetimes(arg, format, name, utc, unit, errors, dayfirst, yearfirst, exact)
        433 # `format` could be inferred, or user didn't ask for mixed-format parsing.
        434 if format is not None and format != "mixed":
    --> 435     return _array_strptime_with_fallback(arg, name, utc, format, exact, errors)
        437 result, tz_parsed = objects_to_datetime64(
        438     arg,
    439     dayfirst=dayfirst,
       (...)    443     allow_object=True,
        444 )
        446 if tz_parsed is not None:
        447     # We can take a shortcut since the datetime64 numpy array
        448     # is in UTC
     
    File D:\Projets Pycharm\.venv\Lib\site-packages\pandas\core\tools\datetimes.py:469, in _array_strptime_with_fallback(arg, name, utc, fmt, exact, errors)
        458 def _array_strptime_with_fallback(
        459     arg,
        460     name,
       (...)    464     errors: str,
        465 ) -> Index:
        466     """
        467     Call array_strptime, with fallback behavior depending on 'errors'.
        468     """
    --> 469     result, tz_out = array_strptime(arg, fmt, exact=exact, errors=errors, utc=utc)
        470     if tz_out is not None:
        471         unit = np.datetime_data(result.dtype)[0]
     
    File pandas/_libs/tslibs/strptime.pyx:501, in pandas._libs.tslibs.strptime.array_strptime()
     
    File pandas/_libs/tslibs/strptime.pyx:451, in pandas._libs.tslibs.strptime.array_strptime()
     
    File pandas/_libs/tslibs/strptime.pyx:583, in pandas._libs.tslibs.strptime._parse_with_format()
     
    ValueError: time data "21/01/25" doesn't match format "%Y-%m-%d", at position 0. You might want to try:
        - passing `format` if your strings have a consistent format;
        - passing `format='ISO8601'` if your strings are all ISO8601 but not necessarily in exactly the same format;
        - passing `format='mixed'`, and the format will be inferred for each element individually. You might want to use `dayfirst` alongside this.

    Quelqu'un pourrait m'aider ?

    cordialement

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 034
    Par défaut
    Il me semble que le %Y (majuscule) attend une année sur 4 chiffres.
    As-tu essayé avec %y (minuscule) ?

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 16
    Par défaut
    Merci Popo pour ta réponse.

    Mais même avec le y en minuscule , j'obtiens toujours la même erreur.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 623
    Par défaut
    Hello,

    Vos dates sont au format "jj/mm/aa" (comme "21/01/25"), mais vous essayez de les parser avec le format '%Y-%m-%d' qui correspond à "aaaa-mm-jj" (comme "2025-01-21").
    Il y a deux erreurs dans votre format :

    1. L'ordre des éléments : Vous avez jour/mois/année, mais vous indiquez année-mois-jour
    2. Le séparateur : Vos dates utilisent "/" mais votre format indique "-"
    3. La longueur de l'année : Vous avez une année sur 2 chiffres (25) mais %Y attend 4 chiffres



    Voici une correction possible,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df_copy['Date'] = pd.to_datetime(df_copy['Date'], format='%d/%m/%y')
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Mapping type - object
    Par bolhrak dans le forum C++
    Réponses: 3
    Dernier message: 17/08/2006, 15h54
  2. [C++ .Net] Comment récupérer les données du type Object ?
    Par psau dans le forum Framework .NET
    Réponses: 3
    Dernier message: 01/08/2006, 16h59
  3. [Dates] Conversion de date (type mktime en date normale)
    Par jeff&&php dans le forum Langage
    Réponses: 6
    Dernier message: 17/05/2006, 16h27
  4. [Crystal reports Version 8.x] Conversion Type chaîne en date
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2005, 15h58
  5. [JComboBox] Transformer l'Object en Date
    Par Rimk78 dans le forum Composants
    Réponses: 4
    Dernier message: 30/05/2005, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo