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.