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éeLes 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éthode | Exemple |
|---|---|---|
| Ajouter une colonne (cas général) | Assignation df['col'] = ... | df['Salaire'] = valeurs |
| Insérer à une position précise | df.insert() | df.insert(1, 'x', valeurs) |
| Chaîner des transformations | df.assign() | df = df.assign(x=...) |
| Ajouter plusieurs colonnes à la fois | pd.concat(axis=1) | pd.concat([df, df2], axis=1) |
| Calculer à partir de colonnes existantes | Assignation vectorisée | df['Total'] = df['A'] + df['B'] |
| Appliquer une logique if/else | np.where() ou masque booléen | np.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 :
- Vous ajoutez plusieurs nouvelles colonnes
- Vous combinez deux DataFrames colonne à colonne (voir aussi concaténer des DataFrames pandas)
À é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'] > 18Quand 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'] = 1Sans .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)| Kaggle | Colab | GitHub |
|---|---|---|
| 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écisassign()pour le chaînageconcat()pour combiner des DataFrames- Colonnes calculées à partir de colonnes existantes
- Colonnes conditionnelles avec
np.where()
Tutoriels associés
- Renommer une colonne dans pandas
- Supprimer une colonne d’un DataFrame pandas
- Réordonner les colonnes d’un DataFrame
- Rechercher une valeur dans une colonne
- Filtrer les lignes d’un DataFrame
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']] * 24. Quelle est la méthode la plus rapide ?
L’assignation simple (df['col'] = ...) est généralement la plus efficace.