Je voudrai créer un dictionnaire a partir de deux colonnes (je veux qu'une colonne soit la clé et l'autre soit la valeur) d'un fichier csv que j'ai lu et filtré avec pandas:
quand je fais
(key, value)=df["colonne1"], df["colonne2"]
Dico[key]=value
ça me retourne une erreur sous forme : 'series' objects are mutable, thus they cannot be hashed
ça me retourne une erreur sous forme : 'series' objects are mutable, thus they cannot be hashed
Si mes souvenirs sont bons c'est un problème avec la variable key, la clé d'un dictionnaire ne peut pas être un type mutable comme indiqué dans le message d'erreur, donc pas de liste par exemple.
Si la colonne 1 est 1, 2, 3 et la colonne 2 a, b, c, quel sera l'intérêt d'un dico contenant une clef (1, 2, 3) associée à la valeur (a, b, c)? Y'aura-t-il d'autres clefs? Ne cherchez vous pas à faire un dico ou la clef 1 serait associé à a, la clef 2 a b, ...
Sinon le message d'erreur dit juste que la clef d'un dico ne peut pas être mutable (comme par exemple une liste) mais un non mutable (un tuple, par exemple).
non j'ai pas encore essayé key,value = df["colonne1"], df["colonne2"]
c'est vrai que la colonne 1 est une variation donc un chiffre et la colonne 2 le type de cette variation donc une chaine de caractère vous voulez dire que je dois inverser de tel manière la clef soit colonne 2 er la valeur pour la variation ?
Le message d'erreur dit que c'est un type 'series'.
C'est peut-être une serie qui contient des int, mais c'est pas un int.
Tu peux contourner le problème en mettant tes 'series' dans une liste, et utiliser l'index de la liste comme clé du dictionnaire.
- Edité par LoupSolitaire il y a environ 11 heures
Exact c'est un objet pandas series
@LoupSolitaire, exact ça marche avec zip merci à vous tous
@ ZakSBen, tu peux faire :
for key, value in zip(df["colonne1"], df["colonne2"]):
Dico[key] = value
- Edité par ZakAad 20 janvier 2021 à 10:57:17
créer un dictionnaire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Le Tout est souvent plus grand que la somme de ses parties.