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 :

fonction date de datetime


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Data Miner
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Data Miner

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Par défaut fonction date de datetime
    Bonjour,
    Voici les données dont je dispose.

    Nom : donnees.png
Affichages : 796
Taille : 9,0 Ko

    Je souhaite créer une date à partir des colonnes "year", "month" et "day". Pour cela, je veux utiliser la fonction date de datetime.
    J'ai bien pensé à mettre "entier" ces trois données. Voici le type de mes données :

    Nom : type.png
Affichages : 806
Taille : 17,5 Ko

    Lorsque j'utilise la fonction date, une erreur s'affiche, et je n'arrive pas à la résoudre.

    Nom : erreur.png
Affichages : 861
Taille : 36,3 Ko

    Merci d'avance pour votre aide
    Images attachées Images attachées   

  2. #2
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Salut,
    je ne suis pas sûr clean_births['year'] te renvoi uniquement les années, mais plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    0    1969
    1    1969
    2    1969
    3    1969
    4    1969
    Name: year, dtype: object
    Je ne suis pas sûr que dt.date comprenne ce que tu lui envoies.

  3. #3
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    Salut,

    "dt" marche avec une colonne d'un dataframe (ou une serie) de format datatime. C'est pour cela que ça ne marche dans ton cas car ces colonnes sont de format "int".
    S'il faut faire créer une date à partir de ces différentes colonnes, il faudrait concaténer. Si ces colonnes sont de types int, il faut d'abord les convertir en string avant de concaténer.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
    df = df.astype('str')
    df['concate'] = df.col1 + df.col2
     
    #Résultat
    df
          col1	col2	concate
    0	1	3	13
    1	2	4	24
    Ensuite, une fois cette colonne créée, si tu veux, tu pourras convertir cette colonne de date en datetime

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    une technique parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import pandas as pd
     
    df = pd.DataFrame({
        'year':  pd.Series([1969, 1969, 1969], dtype='int'),
        'month': pd.Series([1, 1, 1], dtype='int'),
        'day':   pd.Series([1, 2, 3], dtype='int')
    })
     
    df.apply(lambda x: pd.to_datetime('{}-{}-{}'.format(*x), format='%Y-%m-%d'), axis=1)
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0   1969-01-01
    1   1969-01-02
    2   1969-01-03
    Name: date, dtype: datetime64[ns]

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 679
    Par défaut
    Salut,

    Citation Envoyé par Marine_LM Voir le message
    Lorsque j'utilise la fonction date, une erreur s'affiche, et je n'arrive pas à la résoudre
    Une fonction s'attend à recevoir un certain nombre d'arguments dans un type donné. Et datetime.date attend 3 entiers représentant les year, month, day à partir duquel fabriquer un objet "date".
    Et 3 entiers, ce n'est ni une liste de... ni un pandas.Series de...

    datetime.date vous dit juste qu'il se sait pas que faire avec les arguments que vous lui avez passé.
    Vous avez en gros 3 solutions:
    • une boucle qui a chaque itération récupère les year, month, day d'une ligne du dataframe, appelle datetime.date avec ces arguments là et stocke le résultat dans la colonne adhoc.
    • faire faire la boucle à pandas avec df.apply ou mieux une compréhension de liste,
    • utiliser df.to_datetime à un sous ensemble du dataframe de départ (plus efficace car vectorisé).


    De plus quand vous demandez de l'aide, vous êtes supposé avoir déjà un peu bossé sur le problème.
    Ce qui suppose de ne pas partir de vos données mais d'un exemple simple qu'on va pouvoir recopier et reproduire facilement (regardez la réponse de BufferBob, c'est "simple" et on peut jouer avec...).

    Et pour bosser sur un problème, vous avez l'interpréteur Python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> df = pd.DataFrame({
    ...     'year':  pd.Series([1969, 1969, 1969], dtype='int'),
    ...     'month': pd.Series([1, 1, 1], dtype='int'),
    ...     'day':   pd.Series([1, 2, 3], dtype='int'),
    ...     'label': list('ABC'),
    ... })
    >>> df
       year  month  day label
    0  1969      1    1     A
    1  1969      1    2     B
    2  1969      1    3     C
    Si on passe les colonnes intéressantes à .to_datetime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> pd.to_datetime(df[['year', 'month', 'day']])
    0   1969-01-01
    1   1969-01-02
    2   1969-01-03
    dtype: datetime64[ns]
    qu'on peut même stocker directement dans une colonne adhoc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> df['XXX'] = pd.to_datetime(df[['year', 'month', 'day']])
    >>> df
       year  month  day label        XXX
    0  1969      1    1     A 1969-01-01
    1  1969      1    2     B 1969-01-02
    2  1969      1    3     C 1969-01-03
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Candidat au Club
    Femme Profil pro
    Data Miner
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Data Miner

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Par défaut
    Merci beaucoup pour votre aide .
    to_datetime permet de résoudre facilement mon problème, je ne la connaissais pas.
    apply me sera également très utile pour manipuler les dataframe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dates] Fonction date
    Par dafalri dans le forum Langage
    Réponses: 18
    Dernier message: 13/12/2005, 11h27
  2. Question de base sur l'utilisation de la fonction date()
    Par deaven dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/12/2005, 15h33
  3. Som dans form continu en fonction date selectionée dans form
    Par samlepiratepaddy dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2005, 13h05
  4. Fonction Date
    Par marivi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2005, 16h30
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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