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

Calcul scientifique Python Discussion :

Pandas Dataframe append


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Pandas Dataframe append
    Bonsoir,

    J'essaie de concaténer des dataframes à partir du code suivant:

    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
     
    import tarfile
     
    df2 = pd.DataFrame(columns=our_list)
     
    with tarfile.open('V2_GLFI.tar.gz', 'r:*') as tar:
     
        for n in tar.getnames():
     
            if n.endswith('.TXT'):
     
                try:
     
                    df = pd.read_fwf(tar.extractfile(n),colspecs=resultNumCar, header=None, names=our_list,encoding="utf_8_sig")
     
                    df2.append(df, ignore_index=True)
     
                except pd.errors.EmptyDataError:
     
                    continue
    le dataframe df2 reste vide bien qu'un print(df) me montre à chaque tour un nouveau dataframe df?

    Merci
    Eric

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Ouvrez la documentation, çà dit que .append retourne un nouveau dataframe (pas que çà modifie le courant) et qu'il y a des méthodes peut être plus efficaces.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Bonjour,

    je l'avais lu

    Nom : Capture d’écran 2021-04-08 100824.png
Affichages : 116
Taille : 18,5 Ko

    mais ne l'avez pas compris ainsi

    Je voulais seulement appliquer l'exemple ci-dessous dans une boucle

    Nom : Capture d’écran 2021-04-08 100930.png
Affichages : 112
Taille : 11,9 Ko

    Merci
    Eric

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Pourtant çà dit bien "returning a new object"... et les exemples données à la suite sont assez éclairants.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    D'abord, je ne pense pas que l'extension .TXT soit une norme, elle s'écrit souvent même comme .txt ... Il faut mieux faire un texte plus souple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            #if n.endswith('.TXT'):
            if n.upper().endswith('.TXT'):
    Et puis, comme souligné déjà, append() retourne un DataFrame qui est le résultat d'append() qu'il faut le capturer pour qu'on puisse travailler dessus. L'exemple en IPython démontre sous-entendu un display() sur le DataFrame résulté et retourné. En pratique dans un script python, çelà se fait comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    #df2.append(df, ignore_index=True)
                    df2=df2.append(df, ignore_index=True)
    Voilà !

  6. #6
    Membre confirmé
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Merci tsuji,

    j'ai réussi avec

    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
     
     
    import tarfile
     
    df = pd.DataFrame(columns=our_list)
     
    with tarfile.open('EE.tar.gz', 'r:*') as tar:
     
        for n in tar.getnames():
     
            if n.endswith('.TXT'):
     
                try:
     
                    df_new_line = pd.read_fwf(tar.extractfile(n),colspecs=resultNumCar, header=None, names=our_list,encoding="utf_8_sig")
     
                    df = pd.concat([df,df_new_line], ignore_index=True)
     
                except pd.errors.EmptyDataError:
     
                    continue
     
    df
    Il faut encore que je vide le dataframe si je relance le script sinon celui-ci s'enrichit à chaque exécution.

    Je vais tester tes suggestions et de tiens au courant.

    Eric

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/11/2019, 19h06
  2. Pandas - DataFrame - Problème de resampling
    Par Gabriel_1234 dans le forum Général Python
    Réponses: 2
    Dernier message: 22/08/2019, 14h57
  3. [pandas] pandas.DataFrame : Comment ajouter une ligne ?
    Par Oblinky dans le forum Bibliothèques tierces
    Réponses: 2
    Dernier message: 23/07/2018, 09h52
  4. [Python 3.x] Pandas Dataframe selection
    Par thais781 dans le forum Général Python
    Réponses: 3
    Dernier message: 12/03/2018, 18h04
  5. Import .txt vers Panda Dataframe, problème header
    Par pwetzou dans le forum Général Python
    Réponses: 12
    Dernier message: 03/02/2017, 09h37

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