Erreur : either both or neither of x and y should be given
Résolu/Fermémamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 5 août 2022 à 14:33
- Either both or neither of x and y should be given
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur g030 - Forum Bbox Bouygues
- Erreur 10016 epson - Forum Imprimante
2 réponses
26 juil. 2022 à 12:54
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".
Modifié le 5 août 2022 à 14:37
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