HOWTO · Pandas

Comment renommer des colonnes dans Pandas DataFrame

Cet article présente différentes façons de renommer les colonnes d’un DataFrame pandas.

Sur cette page

Pandas propose trois méthodes utiles pour renommer les colonnes d’un DataFrame : attribuer une liste complète avec DataFrame.columns, ne modifier que les libellés souhaités avec DataFrame.rename(), ou remplacer tous les libellés avec DataFrame.set_axis(). Choisissez selon que vous voulez modifier tous les libellés ou seulement quelques-uns.

Choisir une méthode pour renommer les colonnes

Utilisez DataFrame.rename() pour remplacer quelques noms connus. Les libellés sans correspondance restent inchangés : cette méthode convient donc lorsque seules certaines colonnes doivent être renommées. Utilisez DataFrame.columns ou DataFrame.set_axis() lorsque vous disposez d’un nouveau libellé pour chaque colonne. Avec ces deux méthodes, la liste de remplacement doit contenir autant de libellés que le DataFrame compte de colonnes.

Renommer toutes les colonnes avec DataFrame.columns

Attribuez une liste directement à l’attribut columns pour remplacer tous les libellés en une seule fois. L’exemple part des libellés d’origine ['Name', 'Age', 'Marks'] et attribue un nouveau libellé à chaque colonne. La sortie affichée ci-dessous contient uniquement les libellés renommés : ['Name', 'Age', 'Roll_no']. Les deux listes sont ainsi consultables dans le texte et dans la sortie, respectivement.

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import pandas as pd

scores = pd.DataFrame(
    [["John", 20, 45], ["Peter", 21, 62], ["Scot", 25, 68]],
    columns=["Name", "Age", "Marks"],
)
scores.columns = ["Name", "Age", "Roll_no"]
print(list(scores.columns))
['Name', 'Age', 'Roll_no']

Cette méthode est directe, mais vous devez indiquer tous les libellés, y compris ceux qui ne changent pas. Cela peut devenir fastidieux avec un DataFrame qui comporte de nombreuses colonnes. La liste de remplacement doit aussi contenir un nom pour chaque colonne existante ; sinon, pandas ne peut pas attribuer les libellés.

Renommer certaines colonnes avec DataFrame.rename()

Transmettez un dictionnaire à columns : chaque clé correspond à un libellé existant et sa valeur indique le libellé de remplacement. L’exemple ne modifie que Marks et laisse les autres libellés inchangés. Par défaut, DataFrame.rename() renvoie un nouveau DataFrame sans modifier l’original ; veillez donc à conserver le résultat :

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import pandas as pd

scores = pd.DataFrame([["John", 20, 45]], columns=["Name", "Age", "Marks"])
renamed = scores.rename(columns={"Marks": "Score"})
print(list(renamed.columns))
['Name', 'Age', 'Score']

Vous pouvez aussi définir inplace=True pour appliquer la correspondance au DataFrame existant. Dans ce cas, l’appel renvoie None : ne réaffectez donc pas sa valeur de retour au DataFrame. La correspondance est généralement le choix le plus clair pour renommer quelques colonnes et évite de devoir maintenir une liste de tous les libellés.

Remplacer les libellés des colonnes avec DataFrame.set_axis()

DataFrame.set_axis() permet également de remplacer tous les libellés des colonnes. Transmettez la liste complète et sélectionnez l’axe des colonnes. Avec le comportement par défaut, affectez le DataFrame renvoyé :

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import pandas as pd

scores = pd.DataFrame([["John", 20, 45]], columns=["Name", "Age", "Marks"])
renamed = scores.set_axis(["Name", "Age", "Score"], axis="columns")
print(list(renamed.columns))
['Name', 'Age', 'Score']

Comme pour l’affectation directe, la liste doit couvrir toutes les colonnes. Cette méthode est utile lorsque la nouvelle liste est déjà disponible dans une variable distincte ou lorsque vous souhaitez intégrer le remplacement à un appel de méthode ou à une chaîne d’appels. Elle ne permet pas de définir la correspondance sélective entre anciens et nouveaux libellés proposée par DataFrame.rename().

Vérifier le résultat et choisir la méthode adaptée

Après la modification, examinez renamed.columns ou affichez list(renamed.columns) pour vérifier les libellés que vous comptez utiliser. Cette vérification est également utile avant que du code ultérieur ne fasse référence à une colonne par son nom : un libellé mal orthographié ou obsolète ne correspondra pas à celui de la colonne renommée.

En bref, utilisez DataFrame.rename() pour quelques libellés précis. Choisissez DataFrame.columns pour remplacer simplement tous les libellés, et DataFrame.set_axis() lorsque la liste complète s’intègre naturellement à un appel de méthode ou à une chaîne d’appels. Pour chacune des deux méthodes utilisant une liste complète, comptez les libellés et conservez leur ordre, aligné sur celui des colonnes du DataFrame.