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 :

df.query avec un string en filtre ne fonctionne pas [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 6
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut df.query avec un string en filtre ne fonctionne pas
    Bonjour,

    J'ai crée une fonction qui utilise df.query pour filtrer un dataframe.
    Je créer le filtre que je souhaite en string avec des conditions :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def mafonction(arg1, arg2, arg3...)
    maselection = ''
    if arg1 = aa :
      maselection = maselection + xxx
    ...
    J'arrive à avoir le résultat souhaité avec la suite "A == 'eee' & B == 'rrr'"

    Dès que que met la valeur renvoyée de maselection dans df.query() en faisant un copier-coller cela fonctionne et j'obtiens le dataframe filtré.
    Mais dès que je veux utiliser df.query(maselection), cela me renvoi vers une message d'erreur en lien avec le fichier necompiler.py : unknown type str544...

    Avez-vous une idée?

    L'idée de base est de filtrer un dataframe avec un filtre sur plusieurs colonnes en même temps sans que tous les arguments de la fonction soient obligatoirement tous appelés...
    Si vous avez une meilleures solution à proposer, je suis preneur également!

    @++

  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,

    Citation Envoyé par AUREL42160 Voir le message
    Avez-vous une idée?
    Il va falloir un peu plus de code pour permettre de reproduire le problème rencontré..

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 6
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut
    Bonjour,

    Ok, voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ar = numpy.array([['C', 'E', 'A.I',' U'], ['H',' O', 'N', 'Y'], ['K', 'P', 'HPP', 'TYR']])
    df = pandas.DataFrame(ar, index = ['a1', 'a2', 'a3'], columns = ['A', 'B', 'C', 'D'])
     
    def mafonction(arg1, arg2):
        maselection = '"'
        if arg1 != '*':
            maselection = maselection + "A == '" + arg1 + "' & "
        if arg2 !=  '*':
            maselection = maselection + "B == '" + arg2 + "'"
        maselection = maselection + '"'
        return df.query(maselection)
    mafonction('C','E') renvoie une erreur alors que df.query("A == 'C' & B == 'E'") renvoie bien un df trié...

    En espérant avoir été plus clair!

    @++

  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
    Mouais...
    Dans votre fonction, vous vous appliquez à ajouter un '"' au début et un '"' à la fin.
    Je ne vois pas trop pourquoi vous faites çà mais là est la différence qui cause problème: supprimez les et çà ira mieux.

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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 6
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut
    En effet, merci!
    Je ne savais pas qu'avec une variable on devait enlever les guillemets...

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

Discussions similaires

  1. [AJAX] Filtre ne fonctionne pas avec IE
    Par beegees dans le forum AJAX
    Réponses: 2
    Dernier message: 12/05/2009, 10h32
  2. Réponses: 5
    Dernier message: 29/05/2008, 14h32
  3. Réponses: 4
    Dernier message: 13/10/2007, 15h18
  4. Réponses: 4
    Dernier message: 30/03/2007, 10h37
  5. [XHTML] probleme avec <height="100%">, la huateur ne fonctionne pas
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/08/2006, 20h14

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