Informatique

Ajouter une ligne à un DataFrame Pandas

En Pandas, ajouter une ligne à un DataFrame existant se fait de plusieurs manières. La méthode append est dépréciée depuis Pandas 2.0 — voici les alternatives modernes.

Méthode 1 : pd.concat

La méthode recommandée depuis Pandas 2.0 :

new_row = pd.DataFrame([{'col1': val1, 'col2': val2}])

df = pd.concat([df, new_row], ignore_index=True)

L'option ignore_index=True réindexe automatiquement le DataFrame résultant.

Méthode 2 : df.loc

Pour un ajout en place avec un index numérique :

df.loc[len(df)] = [val1, val2, val3]

Attention : cela fonctionne correctement uniquement si l'index est un RangeIndex continu. Si l'index a des trous, len(df) peut écraser une ligne existante.

Méthode 3 : construire la liste d'abord

Si vous ajoutez beaucoup de lignes dans une boucle, construisez d'abord une liste de dictionnaires, puis créez le DataFrame en une seule fois :

rows = []

for item in data:

    rows.append({'col1': item.x, 'col2': item.y})

df = pd.DataFrame(rows)

C'est bien plus performant que de faire pd.concat à chaque itération (complexité linéaire vs quadratique).

Résumé des bonnes pratiques

  • pd.concat : méthode standard pour ajouter une ou quelques lignes.
  • df.loc : ajout en place, rapide, mais attention à l'index.
  • Liste + pd.DataFrame : toujours préférer si plus de 10 ajouts en boucle.
  • df.append : déprécié depuis Pandas 2.0, ne plus utiliser.

À retenir

Règle d'or : ne jamais appeler pd.concat ou append dans une boucle. Accumuler dans une liste Python, puis créer le DataFrame en une seule fois.

Une question ou une suggestion ? Écrivez-nous.