Skip to content

Ajouter une colonne à un DataFrame pandas : 6 méthodes avec exemples

Publié le

Mis à jour le

Pour ajouter une colonne à un DataFrame pandas, assignez une valeur à un nouveau nom de colonne : df['nouvelle_colonne'] = valeurs. C’est la bonne réponse dans la grande majorité des cas.

df['Salaire'] = [50000, 60000, 70000, 80000]   # à partir d'une liste
df['Bonus'] = df['Salaire'] * 0.1              # colonne calculée

Les cinq autres méthodes répondent chacune à un besoin précis : insérer à une position exacte, chaîner des transformations, ajouter plusieurs colonnes d’un coup, ou appliquer une logique conditionnelle. Le tableau suivant vous oriente en dix secondes.

Quelle méthode choisir ?

Vous voulez…MéthodeExemple
Ajouter une colonne (cas général)Assignation df['col'] = ...df['Salaire'] = valeurs
Insérer à une position précisedf.insert()df.insert(1, 'x', valeurs)
Chaîner des transformationsdf.assign()df = df.assign(x=...)
Ajouter plusieurs colonnes à la foispd.concat(axis=1)pd.concat([df, df2], axis=1)
Calculer à partir de colonnes existantesAssignation vectoriséedf['Total'] = df['A'] + df['B']
Appliquer une logique if/elsenp.where() ou masque booléennp.where(df['Age'] >= 35, 'Oui', 'Non')

Voyons chaque méthode en détail, puis les pièges courants (SettingWithCopyWarning en tête).

1. Assignation simple : la méthode par défaut

df['NouvelleColonne'] = [1, 2, 3, 4]

Exemple

df['Salaire'] = [50000, 60000, 70000, 80000]

Quand l’utiliser :

  • La méthode la plus courante et la plus simple
  • Ajouter des valeurs constantes, des listes, des tableaux NumPy ou des résultats calculés

À savoir :

  • Écrase la colonne si elle existe déjà
  • Très efficace (opération vectorisée)

2. df.insert() : insérer une colonne à une position précise

df.insert(loc=1, column='Departement', value=['IT', 'RH', 'Finance', 'Admin'])

Quand l’utiliser :

  • Vous voulez contrôler l’ordre des colonnes
  • Utile pour les rapports et l’export de données structurées

Vous pouvez aussi insérer par rapport à une colonne existante :

df.insert(df.columns.get_loc("Age"), 'Score', [1, 2, 3, 4])

Pratique quand l’ordre dépend de noms existants (pipelines automatisés). Pour réorganiser des colonnes déjà présentes, voyez plutôt réordonner les colonnes d’un DataFrame.

3. df.assign() : style fonctionnel et chaînage

df = df.assign(Taxe=lambda x: x['Salaire'] * 0.1)

Avantages :

  • S’intègre naturellement au method chaining
  • Ne modifie pas le DataFrame d’origine sauf si vous réassignez le résultat

4. pd.concat() : ajouter plusieurs colonnes d’un coup

df2 = pd.DataFrame({'Bonus': [1000, 2000, 2500, 1800]})
df = pd.concat([df, df2], axis=1)

Quand l’utiliser :

À éviter :

  • Pour une seule colonne, l’assignation simple est plus rapide et plus lisible

5. Colonne calculée à partir de colonnes existantes

C’est le cas d’usage le plus fréquent en pratique :

df['Total'] = df['Math'] + df['Science'] + df['Anglais']
df['Age_Normalise'] = df['Age'] / df['Age'].max()

6. Colonnes conditionnelles : np.where() et masques booléens

import numpy as np
df['Senior'] = np.where(df['Age'] >= 35, 'Oui', 'Non')

Version avec masque booléen :

df['Majeur'] = df['Age'] > 18

Quand l’utiliser :

  • Créer des étiquettes de classification
  • Appliquer des conditions binaires (pour des conditions plus riches, voir df.where())

Écraser une colonne existante

Une assignation simple suffit — pandas remplace la colonne sans avertissement :

df['Age'] = [26, 31, 36, 41]

⚠ Le piège classique : SettingWithCopyWarning

Si vous ajoutez une colonne à un sous-ensemble découpé sans copy() :

subset = df[df['Age'] > 30]
subset['Flag'] = 1   # Warning !

Correction :

subset = df[df['Age'] > 30].copy()
subset['Flag'] = 1

Sans .copy(), pandas ne garantit pas que l’assignation touche le sous-ensemble ou le DataFrame d’origine. Ce comportement disparaît avec le mode Copy-on-Write activé par défaut dans pandas 3.x, mais le .copy() explicite reste la pratique la plus sûre sur les versions 1.x/2.x.

Visualiser le résultat sans écrire de code de graphique

Après avoir enrichi votre DataFrame de colonnes calculées, l’étape suivante est souvent de les explorer visuellement. PyGWalker transforme n’importe quel DataFrame pandas ou Polars en interface interactive de type Tableau, directement dans Jupyter Notebook :

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
KaggleColabGitHub
Run PyGWalker in Kaggle (opens in a new tab)Run in Google Colab (opens in a new tab)Give us a ⭐️ (opens in a new tab)

Conclusion

Les 6 méthodes essentielles pour ajouter des colonnes dans pandas :

  • Assignation simple (meilleur choix par défaut)
  • insert() pour un ordre précis
  • assign() pour le chaînage
  • concat() pour combiner des DataFrames
  • Colonnes calculées à partir de colonnes existantes
  • Colonnes conditionnelles avec np.where()

Tutoriels associés

Foire aux questions

1. Comment ajouter une colonne avec la même valeur pour toutes les lignes ?

df['Source'] = 'System'

2. Comment ajouter une colonne basée sur une fonction ?

df['Score'] = df.apply(lambda x: x['Math'] * 0.6 + x['Anglais'] * 0.4, axis=1)

Pour des calculs simples, préférez la version vectorisée (df['Score'] = df['Math'] * 0.6 + df['Anglais'] * 0.4), nettement plus rapide.

3. Comment ajouter plusieurs colonnes en une fois ?

df[['A', 'B']] = df[['X', 'Y']] * 2

4. Quelle est la méthode la plus rapide ?

L’assignation simple (df['col'] = ...) est généralement la plus efficace.