Renommer une colonne dans pandas : rename(), df.columns et 4 autres méthodes
Publié le
Mis à jour le
Pour renommer une colonne dans pandas, utilisez df.rename(columns={'ancien_nom': 'nouveau_nom'}). Seules les colonnes du dictionnaire sont renommées ; toutes les autres restent intactes.
df = df.rename(columns={'Age': 'Annees'}) # une colonne
df = df.rename(columns={'Age': 'Annees', 'Gender': 'Sexe'}) # plusieurs colonnes
df.columns = ['ID', 'Annees', 'Dept'] # toutes les colonnesQuelle méthode choisir ?
| Vous voulez… | Méthode | Exemple |
|---|---|---|
| Renommer une ou quelques colonnes | rename() | df.rename(columns={'a': 'b'}) |
| Renommer toutes les colonnes | df.columns = [...] | df.columns = ['A', 'B', 'C'] |
| Style fonctionnel / chaînage | set_axis() | df.set_axis(['A', 'B'], axis=1) |
| Nettoyage en masse (minuscules, espaces…) | List comprehension | [c.lower() for c in df.columns] |
| Renommer par index de position | rename() avec clé entière | df.rename(columns={2: 'Dept'}) |
| Renommer dès la lecture du fichier | read_csv(names=...) | pd.read_csv('f.csv', header=0, names=[...]) |
Le reste de la page détaille chaque méthode avec des exemples exécutables, puis les bonnes pratiques.
1. Renommer une seule colonne avec rename()
C’est la méthode la plus sûre et la plus explicite.
import pandas as pd
df = pd.DataFrame({
'Name': ['John', 'Alex', 'Peter'],
'Age': [25, 24, 28],
'Gender': ['Male', 'Male', 'Male']
})
df = df.rename(columns={'Age': 'Years'})
print(df)Résultat :
Name Years Gender
0 John 25 Male
1 Alex 24 Male
2 Peter 28 Male2. Renommer plusieurs colonnes avec rename()
Il suffit de passer un dictionnaire plus large.
df = df.rename(columns={
'Age': 'Years',
'Gender': 'Sex'
})Cette approche évite les problèmes accidentels d’ordre des colonnes et préserve l’index.
3. Renommer toutes les colonnes d’un coup avec df.columns = [...]
Utile lorsque vous connaissez tous les nouveaux noms de colonnes.
df.columns = ['ID', 'Years', 'Dept']⚠️ Important : la longueur de la liste doit correspondre exactement au nombre de colonnes, sinon pandas lève une ValueError.
4. Renommer des colonnes avec set_axis() (style fonctionnel)
Retourne un nouveau DataFrame, ce qui s’intègre bien dans une chaîne de transformations.
df = df.set_axis(['A', 'Years', 'B'], axis=1)Bien que flexible, cette méthode est moins utilisée pour de simples renommages.
5. Renommer dynamiquement avec une list comprehension
Parfait pour des opérations de mise en forme en masse :
df.columns = [col.replace('_', ' ').title() for col in df.columns]Idéal pour un nettoyage automatisé :
df.columns = [col.lower() for col in df.columns]
df.columns = [f"user_{col}" for col in df.columns]Ce type de normalisation (minuscules, underscores, préfixes) est une étape classique du nettoyage de données avec pandas.
6. Renommer des colonnes par index
Rarement nécessaire mais possible, quand les noms sont inconnus, dupliqués ou générés dynamiquement :
df = df.rename(columns={2: 'Dept'})Bonnes pratiques
✔ Préférer rename() pour la clarté
rename() est explicite et limite les surprises : les colonnes non mentionnées ne bougent pas.
✔ Réserver df.columns = [...] au renommage complet
Changer la liste entière est rapide — mais échoue si le nombre d’éléments ne correspond pas.
✔ Normaliser en minuscules + underscores pour des pipelines propres
df.columns = [c.lower().replace(' ', '_') for c in df.columns]✔ Éviter inplace=True
La documentation pandas le confirme : inplace=True n’apporte pas de gain de performance et complique le chaînage. Réassignez plutôt le résultat.
⚡ Aide-mémoire
df.rename(columns={'old': 'new'}) # une ou quelques colonnes
df.columns = ['A', 'B', 'C'] # toutes les colonnes
df = df.set_axis(['A', 'B', 'C'], axis=1) # style fonctionnel
df.columns = [col.lower() for col in df.columns] # nettoyage en masse
df.rename(columns={2: 'new_name'}) # par indexExplorer le DataFrame renommé sans écrire de graphiques
Une fois vos colonnes proprement nommées, PyGWalker transforme le DataFrame en interface d’exploration visuelle façon Tableau, directement dans Jupyter :
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)Conclusion
L’approche recommandée :
rename()pour renommer des colonnes spécifiquesdf.columns = [...]pour renommer toutes les colonnes- List comprehensions pour les transformations dynamiques
- Renommage par index uniquement lorsque c’est nécessaire
Tutoriels associés
- Ajouter une colonne à un DataFrame pandas
- Supprimer une colonne d’un DataFrame pandas
- Réordonner les colonnes d’un DataFrame
- Trier un DataFrame pandas
- Créer un DataFrame à partir d’un dictionnaire
Foire aux questions
1. Comment renommer une colonne dans pandas ?
df.rename(columns={'old': 'new'})2. Comment renommer une colonne par son index ?
df.rename(columns={0: 'id'})3. Comment renommer toutes les colonnes d’un coup ?
df.columns = ['A', 'B', 'C']