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:
group_lines = df.groupby('id').apply(lambda x: ','.join(x['ma_colonne']))
Je cherche ensuite les données de cette objet dans mon df pour modifier celui-ci. Je le fais avec cette boucle:
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) |
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[].
Avez-vous une idée de comment améliorer cet algo?
Merci
Partager