Erreur : either both or neither of x and y should be given
Résolumamiemando Messages postés 33725 Date d'inscription Statut Modérateur Dernière intervention - 5 août 2022 à 14:33
- Either both or neither of x and y should be given
- Erreur 0x80070643 - Accueil - Windows
- Corriger l'erreur 0x80070643 de la mise à jour KB5034441 de Windows 10 - Accueil - Windows
- Java code erreur 1603 ✓ - Forum Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur t32 ✓ - Forum Livebox
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