urgh, quelqu'un a des cours de base pour mapper des identifiants en python ? (j'ai deux .csv, avec la colonne B d'identifiants communs, je veux ajouter le contenu de la colonne C de 1.csv à la colonne C de 2.csv, selon l'identifiant B. Le piège étant que B apparaît deux fois et qu'il faut trier selon A aussi (j'arrive à m'embrouiller moi-même ><))
Je précise que si je demande des *cours* c'est parce que je n'y connais *rien* en python, donc j'ai vraiment besoin d'une page qui explique tout, juste "utilise ça", ça le fait carrément pas ;)
@Harmonia_Amanda ok
1) charger les donnés des csv https://docs.python.org/2/library/csv.html?highlight=csv#csv.DictReader
2) Trier les donnés avec sort et itemgetter https://docs.python.org/2/library/operator.html#operator.itemgetter datas.sort(key=itemgetter('B')) par exemple pour trier par la colonne B
3) Faire un dictionnaire avec pour clé B en prenant en compte les multiples lignes pour un même identifiant https://docs.python.org/2/library/itertools.html#itertools.groupby
@Harmonia_Amanda teste et pose des questions si tu bloques sur ces première étape :-)
@kanor là, je pige tellement rien à la doc que je me dis que le faire à la main vu que je n'ai que 9000 lignes ira vachement plus vite.
@Harmonia_Amanda :/ je te rajoute des explications sur l'exemple
#Chargement de la librairie
import csv
#on aurait pu écrire
#csvfile = open('names.csv') c'est
#ça va permettre de manipuler le #fichier names.csv
with open('names.csv') as csvfile:
#la base de python l'indentation
#la on lit le fichier csv
reader = csv.DictReader(csvfile)
#on boucle, row est un dictionnaire avec comme clé le nom de l’entête de ton fichier
for row in reader:
print(row['first_name'], row['last_name'])
@kanor franchement, j'en ai pour plus de deux heures pour faire un script fonctionnel et moins de deux heures pour le faire à la main. J'y vais à la main.
@kanor si j'ai bien compris, il faut que A soit identique là ? Mes A ne sont pas identiques (enfin rarement) ce sont des translittérations différentes d'un même nom, du coup un humain pige lequel va avec lequel mais je suppose qu'un script devrait filtrer autrement ?
@Harmonia_Amanda je croyais que tu te basais sur la colonne B ?
@kanor dans mon 1.csv, la colonne A c'est le nom, B l'identifiant. B peut être utilisé par deux personnes différentes.
dans mon 2.csv, A c'est le nom (mais pas translittéré pareil), B c'est l'identifiant identique à 1 (mais liste incomplète) et C c'est un 2e identifiant unique que je veux ajouter à 1.
@kanor B est utilisé par deux personnes, C est un identifiant unique par personne. Du coup pour ajouter le "bon" C à chacun des B, faut filtrer par A… mais les A ne sont pas identiques.

@kanor genre dans 1.csv j'ai :
Rumiana SPASSOVA 00005464
Stanimir TODOROV 00005464

et dans 2.csv j'ai :
Stanimir Todorov 00005464 Q2223627
Rumyana Spasova 00005464 Q3284415

@kanor et je veux ajouter les Qid à 1.csv
@Harmonia_Amanda Ah donc il faut prendre en compte A pour placer le Qid sur la bonne ligne mais A n'est pas identique entre 1 et 2, donc la ça devient plus compliqué c'est ça ?
@kanor voilà ! Et on ne peut même pas filtrer par initiale, y a des Egor / Yegor qui traînent…