import pandas
# Tes données de départ
data = {"col_x": ["a", "a", "a", "b", "b"], "col_y": ["ra", "rb", "rc", "ka", "kb"]}
df = pandas.DataFrame(data)
print(df, "\n")
# Création d'une liste contenant les tuples
liste = [(val_x, df["col_y"][i]) for i, val_x in enumerate(df["col_x"])]
print(liste, "\n")
# Création d'un dictionnaire contenant juste les clés
dico = {k: [] for k in df["col_x"]}
print(dico, "\n")
# Attribution des valeurs aux clés du dictionnaire
for elem in liste:
dico[elem[0]].append(elem[1])
print(dico, "\n")
Cela donne en sortie :
col_x col_y
0 a ra
1 a rb
2 a rc
3 b ka
4 b kb
[('a', 'ra'), ('a', 'rb'), ('a', 'rc'), ('b', 'ka'), ('b', 'kb')]
{'a': [], 'b': []}
{'a': ['ra', 'rb', 'rc'], 'b': ['ka', 'kb']}
(même si je ne comprends pas bien la ligne 12 : liste = ...)
liste = [(val_x, df["col_y"][i]) for i, val_x in enumerate(df["col_x"])]
C'est une "list comprehension", c'est-à-dire que je créée la liste "liste" à la volée.
"enumerate(df["col_x"])" : permet d'itérer le contenu de la colonne "col_x" (val_x) tout en générant un indice (i).
"(val_x, df["col_y"][i])" : définition du tuple qui est ajouté à la liste, il est composé de la valeur de la colonne "col_x" auquel est associé au contenu de la colonne "col_y" correspondant grâce à l'indice i.
Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e
Transformer colonnes de dataframe en 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.
PB68
PB68