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 :

error : value of a DataFrame is ambiguous


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut error : value of a DataFrame is ambiguous
    Bonjour,

    je suis débutant, j'ai écrit le programme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import pandas as pd 
    csv_path= links["unemployment"]
    df=pd.read_csv(csv_path)
    if df.loc["0":"68","unemployment":"unemployment"]>8.5:
        print (pd.read_csv(csv_path))
    et ça me donne ce message d'erreur:

    ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    Comment résoudre le problème svp?

    Cordialement

  2. #2
    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,
    Pour essayer de répondre à cette question, il faudrait nous donner un peu plus de détails sur les types de données sur lesquelles vous travaillez. Tel que vous avez présenté votre exemple, on ne peut pas le tester pour voir d'où vient le problème.
    Cette partie du code fait quoi ? Quel est le fichier csv que vous voulez lire ? Parce que "pd.read_csv" permet de lire un fichier csv.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    csv_path= links["unemployment"]
    df=pd.read_csv(csv_path)

  3. #3
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut
    Bonjour,

    merci pour la réponse, le ficheir CSV affiche 3 colonnes pour 68 lignes, exemple ci dessous:


    date unemployment
    0 1948 3.750000
    1 1949 6.05000


    Le code doit afficher seulement les lignes si le nombre dans unemployment est supérieur a 8,5%


    merci pour votre support

  4. #4
    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
    Bonjour,

    Avant de parler de cette sélection, il faudrait avant tout être en mesure de pouvoir lire ce fichier CSV.
    Dans votre code, je n'ai pas compris comment vous l'avez fait parce que je vois le code de lecture de ce fichier à plusieurs endroits de votre code.

  5. #5
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut
    je ne vois pas trop le 2 fois,

    j’appelle le fichier pour faire tourner le code de recherche, puis une seconde fois pour extraire les données en fonction de la recherche

    d’après le message d'erreur, si je me trompe pas, la lecture du csv est ok, le problème viens plutôt des chiffre la colonne unemployment et du 8.5 dans la recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ValueError                                Traceback (most recent call last)
    <ipython-input-75-f19effa50c11> in <module>
          2 csv_path= links["unemployment"]
          3 df=pd.read_csv(csv_path)
    ----> 4 if df.loc["0":"68","unemployment":"unemployment"]>8.5:
          5     print (pd.read_csv(csv_path))
          6 
    ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

  6. #6
    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
    En fait, c'est votre code que je n'arrive pas à bien comprendre.

    Normalement, ça devrait être comme ça :
    1- Lecture du fichier CSV avec Pandas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df = pd.read_csv(chemin du fichier)
    2- Sélection des lignes dont la colonne "unemployment" a la valeur est supérieur à 8,5%.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection = df.loc[df["unemployment"]>8.5]
    Pour plus de détails sur la sélection de données avec pandas : https://pandas.pydata.org/pandas-doc...Frame.loc.html

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

    C'est pas si compliqué de lancer l'interpréteur Python et de tester un peu.
    On crée un dataframe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> df = pd.DataFrame([0, 1, 2], columns=('a',))
    Puis on regarde ce que sort df.loc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> df.loc[:] > 1
           a
    0  False
    1  False
    2   True
    Difficile de comparer un tableau de booléens à une valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> if df.loc[:] > 1: pass
    ...
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\py_env\py34-64\lib\site-packages\pandas\core\generic.py", line 917, i
    n __nonzero__
        .format(self.__class__.__name__))
    ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(),
    a.item(), a.any() or a.all().
    >>>
    C'est ce qu'essaie de raconter le message d'erreur.

    Si ce qu'on veut c'est créer un tableau en sélectionnant les lignes où 'a' est > 1, on peut le faire comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> df[df.a > 1]
       a
    2  2
    Et voilà...

    Pas besoin de CSV, pas besoin de... juste lever un peu le nez du guidon pour réfléchir aux opérations qu'on cherche à faire.
    On essaye de la reproduire sur un petit exemple.
    Si on y arrive pas, c'est qu'il manque un ingrédient dans la potion et on ajoute quelque chose.

    Sinon on essaie de comprendre de donner un nom à ce qu'on fait. Ici sélectionner les lignes d'un dataframe pandas suivant une condition testée sur un colonne. Ce qui donne quelques mots clefs pour chercher un peu sur Internet ou dans la documentation.

    Si on trouve quelque chose qui semble être une solution, çà se teste rapidement. Et si çà marche on peut oser le transposer dans le code. Sinon, il y a de quoi poster pour reproduire le soucis assez simplement.... donc l'espoir d'une réponse rapide (mais sans avoir un minimum bossé pour réduire le problème et en faire quelque chose de reproductible, ben,... pas grand monde prendra le temps de faire ce boulot là pour vous).

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

  8. #8
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    donc l'espoir d'une réponse rapide (mais sans avoir un minimum bossé pour réduire le problème et en faire quelque chose de reproductible, ben,... pas grand monde prendra le temps de faire ce boulot là pour vous).

    - W
    Bonjour,

    je débute tout juste,j 'ai passer quelques heures sur le sujet. j'ai appris d'autres langages informatiques en posant aussi des questions sur des forums dédiés, j'ai jamais eu de réponse aussi sèche, c'est assez dommage, si c'est ça la communauté python...

    Je vous remercie cependant pour votre aide condescendante et hautaine

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2016, 00h20
  2. Error getting value ?
    Par jacpapac dans le forum JSF
    Réponses: 3
    Dernier message: 02/02/2007, 11h04
  3. [Manipulations CSS] Error in parsing value for property 'top'
    Par ARRG dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/09/2006, 14h56
  4. Réponses: 4
    Dernier message: 25/08/2006, 13h55
  5. [Postgresql]Error is ambiguous
    Par champion dans le forum Hibernate
    Réponses: 2
    Dernier message: 16/04/2005, 17h06

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