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 :

Pandas: extraire un tableau pour toutes les lignes qui ont mêmes valeurs dasn les colonnes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 280
    Par défaut Pandas: extraire un tableau pour toutes les lignes qui ont mêmes valeurs dasn les colonnes
    Bonjour,

    débutant sur Pandas, je m'y perds un peu entre le colonnes , les index et all() , et ...

    J'ai donc un Dataframe df et dans ce Dataframe, un liste de colonnes de colonnes qui m'intéressent:
    dans chaque ligne du Dataframe, si ces colonnes ont la même valeur, alors je retient cette ligne.

    exemple:
    première ligne de mon tableau, toutes les colonnes ont pour valeur 'a' , je garde !
    deuxième ligne, toutes les colonnes ont pour valeur 'b', je garde aussi !
    et ainsi de suite.

    Donc je veux extraire le tableau qui contient toutes ces lignes

    En espérant avoir été clair sur tout ça , voici ce que j'arrive à faire pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for index in range(len(df)):
        print((df.loc[index, mes_colonnes]).nunique() == 1)
    Je pourrais bien récupérer les index de cette façon, mais je voudrais extraire directement un tableau , sans une boucle for.

    Je me doute bien qu'on peut faire ça en une ligne. Mais pour l'instant , les méthodes de Pandas ne me sont pas très familières...je bataille avec all() et axis...

    Donc si une bonne âme pouvait me mettre sur la voie.

    Merci d'avance,

    Laurent.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    je trouve en faisant une recherche
    https://stackoverflow.com/a/52152882
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df[df.nunique(1).eq(1)]

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 280
    Par défaut
    Merci pour cette réponse.

    donc le 1 de nunique , c'est pour axis=1, je suppose: il retourne d'abord le nombre de données uniques dans toutes les colonnes.
    (pour chaque ligne ! ça j'ai encore du mal à me le mettre dans la tête ...)

    Première étape: df.nunique(1) renvoie un tableau de une seule colonne. Colonne qui contient, pour chaque lignes, le nombre d'éléments unique trouvé dans les colonnes de cette ligne. je le sais parce que j'ai regardé le résultat! Mais si je me contente de lire ce code, je n'ai aucune idée de ce qu'il renvoi...

    Ensuite, eq(1) , renvoi ce tableau avec des True( si égal à 1 ) ou False.

    Et enfin, df de tout le code précédent renvoi les lignes qui sont True...

    Mon problème , pour l'instant, c'est que je dois déchiffrer tout ça à chaque fois.

    C'est pour ça que j'ai écrit le code que j'ai posté: en lisant, je comprend ce que je demande.
    Je vais devoir trouver un moyen d'avoir ce mécanisme en tête.

    Merci pour la réponse.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    c'est pour ça qu'il y a de la doc (officielle) qui existe https://pandas.pydata.org/docs/refer...e.nunique.html

    A moins de l'utiliser régulièrement, il faut savoir déchiffrer ou poser la bonne question et expérimenter, ça fait partie du développement.
    là, j'ai demandé à google "pandas extract lines where every columns have the same value on the current line"
    https://www.google.com/search?q=pand...e+current+line
    et la solution était sur la 1ère ligne des résultats de recherche (coup de chance sûrement).

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

Discussions similaires

  1. Inserer une formule pour toutes les colonnes vides
    Par sakhob dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/09/2014, 20h26
  2. Réponses: 4
    Dernier message: 31/01/2014, 11h38
  3. [XL-2007] Retrouver toutes les lignes qui ont une valeur identique dans la colonne A
    Par bartimeus35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/06/2012, 17h47
  4. Réponses: 3
    Dernier message: 28/04/2009, 00h42
  5. Sélection de lignes qui ont des valeurs maximales
    Par sicnarf dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/10/2008, 15h42

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