Bonjour,
j'ai un dataframe df (créé avec la librairie panda) sur lequel mon identifiant de ligne id (qui n'est pas l'index) est dupliqué car une colonne ("ma_colonne") a des données sur plusieurs lignes pour un même identifiant.
Ce que je veux faire, c'est grouper les lignes de cette colonne en une seule. Ce que je fais avec:
Je cherche ensuite les données de cette objet dans mon df pour modifier celui-ci. Je le fais avec cette boucle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part group_lines = df.groupby('id').apply(lambda x: ','.join(x['ma_colonne']))
Ca marche, mais 2 problèmes: C'est très très long dès que mon df a plus de 10 000 lignes (puisque boucle sur 2 objets j'imagine....). Et la fonction set_value() va être déprecié dans la prochaine mise à jour de panda: ils disent de remplacer celle-ci par df.at[].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for row in df.itertuples(): for i,v in group_lines.iteritems(): if row.id == i: df.set_value(row.Index, 'ma_colonne', v)
Avez-vous une idée de comment améliorer cet algo?
Merci![]()
Partager