Skip to content

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 colonnes

Quelle méthode choisir ?

Vous voulez…MéthodeExemple
Renommer une ou quelques colonnesrename()df.rename(columns={'a': 'b'})
Renommer toutes les colonnesdf.columns = [...]df.columns = ['A', 'B', 'C']
Style fonctionnel / chaînageset_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 positionrename() avec clé entièredf.rename(columns={2: 'Dept'})
Renommer dès la lecture du fichierread_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   Male

2. 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 index

Explorer 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)

PyGWalker for Data visualization (opens in a new tab)

Conclusion

L’approche recommandée :

  • rename() pour renommer des colonnes spécifiques
  • df.columns = [...] pour renommer toutes les colonnes
  • List comprehensions pour les transformations dynamiques
  • Renommage par index uniquement lorsque c’est nécessaire

Tutoriels associés

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']