Erreur : either both or neither of x and y should be given
RésoluBonjour,
Après avoir écris cette ligne :
df['Result']=np.where(df['Libellé']==df['Catalogue urnes'],df['Consommables'])
J'obtiens donc cette erreur :
either both or neither of x and y should be given
A savoir : les colonnes libellé, catalogue urnes et consommables sont de type string et ne dispose pas le même nombre de ligne.
Ce que je veux : si la colonne libellé et égale = la colonne catalogue urnes , alors dans la colonne que je veux crée (result), j'inscris ce qu'il est noté dans la colonne consommable
Merci à vous
- Either both or neither of x and y should be given
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
bonjour,
Te pense que le message d'erreur t'indique qu'il manque un paramètre.
Dans ton explication, tu écris "si ..., alors ...". Il manque le "sinon".
Bonjour,
Explication de l'erreur
L'erreur vient de np.where qui s'utilise de deux manières possibles :
- soit tu donnes juste un paramètre, et la valeur retournée correspond à la zone conservée par np.where :
import numpy as np a = np.arange(10) b = np.where(a < 5)[0] print(b) # [0, 1, 2, 3, 4]
- soit tu donnes trois paramètres (condition, x, y) : si la condition est vraie, alors les données retournées sont prises depuis x, sinon depuis y.
import numpy as np a = np.arange(10) b = np.arange(100, 110) c = np.arange(200, 210) d = np.where(a % 2 == 0, b, c) print(d) # [100 201 102 203 104 205 106 207 108 209]
Comme tu n'es dans aucun de ces deux cas, np.where te dit que tu ne l'as pas appelé avec un nombre de paramètre valide.
Retour à ton problème
Ce que je veux : si la colonne libellé et égale = la colonne catalogue urnes , alors dans la colonne que je veux crée (result), j'inscris ce qu'il est noté dans la colonne consommable
Il te faut donc utiliser la version à trois paramètres. Dans le code que tu proposes, tu ne spécifies pas comment doit être rempli df["Result"] si la condition n'est pas vérifiée, d'où l'erreur. Peut-être veux tu écrire :
df["Result"] = np.where( df["Libellé"] == df["Catalogue urnes"], df["Consommables"], df["Result"] )
Bonne chance