Remplir cellule d'un tableau en fonction du contenu des cellules d'une autre colone
Bonjour,
Eternel débutant en python (je dois avoir l'occasion de pratiquer 3 fois par an) j'aurais besoin de manipuler un fichier csv mais j'avoue coincer sur la partie "logique".. Toute aide serait la bienvenue =)
J'ai 3 colonnes dans mon fichier csv
col1 = [1,2,3,4,5,6,7,8,9,10]
col2 = [A,A,A,B,C,C,C,C,A,A]
col3 = []
Je voudrais que mon script me donne pour col3 une valeur incrémentée pour chaque classe dans la col2 (c'est à dire chaque groupe de valeurs continues)
En d'autres mots: tant que la valeur d'une cellule n'est pas différente de celle de la cellule précédente dans la col2 garder le même numéro dans col3
Et d'un point de vue résultat, ca devrait donner: col3 = [1,1,1,2,3,3,3,3,4,4]
Une idée de la façon de procéder ? :/
Navré pour la question sans doute très "bête".
Je vous propose ceci : toujours avec le groupby de itertools
Citation:
Envoyé par
kerplouz
Bonjour,
Eternel débutant en python (je dois avoir l'occasion de pratiquer 3 fois par an) j'aurais besoin de manipuler un fichier csv mais j'avoue coincer sur la partie "logique".. Toute aide serait la bienvenue =)
J'ai 3 colonnes dans mon fichier csv
col1 = [1,2,3,4,5,6,7,8,9,10]
col2 = [A,A,A,B,C,C,C,C,A,A]
col3 = []
Je voudrais que mon script me donne pour col3 une valeur incrémentée pour chaque classe dans la col2 (c'est à dire chaque groupe de valeurs continues)
En d'autres mots: tant que la valeur d'une cellule n'est pas différente de celle de la cellule précédente dans la col2 garder le même numéro dans col3
Et d'un point de vue résultat, ca devrait donner: col3 = [1,1,1,2,3,3,3,3,4,4]
Une idée de la façon de procéder ? :/
Navré pour la question sans doute très "bête".
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
from itertools import groupby
col1 = [1,2,3,4,5,6,7,8,9,10]
col2 = ["A","A","A","B","C","C","C","C","A","A"]
col3 = []
gc2 = [list(g) for (c,g) in groupby(col2)]
i=0
for lx in gc2:
lx = "".join(lx)
lx = lx.replace(lx[0],str(col1[i]))
col3.extend(list(map(int,lx)))
i +=1
print(col3) |