Skip to content

pandas : Renommer les noms de colonnes/index (labels) de DataFrame

Vous pouvez renommer (modifier) ​​les noms de colonne/index de pandas.DataFrame en utilisant les méthodes rename(), add_prefix(), add_suffix(), set_axis() ou en mettant à jour les attributs colonnes/index.

Vous pouvez également renommer les noms d’index (étiquettes) de pandas.Series de la même manière.

Cet article décrit le contenu suivant.

  • Renommer la colonne/le nom de l’index (libellé) :rename()
    • Modifier plusieurs noms de colonne/index (étiquettes)
    • Mettez à jour l’objet d’origine :inplace
    • Renommer avec des fonctions ou des expressions lambda
  • Ajoutez un préfixe/suffixe aux noms de colonne :add_prefix(), add_suffix()
  • Renommer tous les noms (libellés)
    • set_axis()
    • Mettre à jour les attributs colonnes/index de pandas.DataFrame
  • Pour les pandas.Série

La méthode set_index() qui définit une colonne existante comme index est également fournie. Voir l’article suivant pour plus de détails.

Par exemple, créez pandas.DataFrame comme suit :

import pandas as pd

df = pd.DataFrame({'A': [11, 21, 31],
                   'B': [12, 22, 32],
                   'C': [13, 23, 33]},
                  index=['ONE', 'TWO', 'THREE'])

print(df)
#         A   B   C
# ONE    11  12  13
# TWO    21  22  23
# THREE  31  32  33

Renommer la colonne/le nom de l’index (libellé) :rename()

Vous pouvez utiliser la méthode rename() de pandas.DataFrame pour modifier le nom de la colonne/de l’index individuellement.

Spécifiez le nom d’origine et le nouveau nom dans dict comme {nom d’origine : nouveau nom} dans le paramètre colonnes/index de renommer().

colonnes est pour le nom de la colonne et index est pour le nom de l’index. Si vous souhaitez modifier l’un ou l’autre, vous ne pouvez spécifier qu’une colonne ou un index.

Un nouveau DataFrame est renvoyé et le DataFrame d’origine n’est pas modifié.

df_new = df.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'})
print(df_new)
#        Col_1   B   C
# Row_1     11  12  13
# TWO       21  22  23
# THREE     31  32  33

print(df)
#         A   B   C
# ONE    11  12  13
# TWO    21  22  23
# THREE  31  32  33

Modifier plusieurs noms de colonne/index (étiquettes)

Vous pouvez modifier plusieurs noms de colonne/index à la fois en ajoutant des éléments à dict.

print(df.rename(columns={'A': 'Col_1', 'C': 'Col_3'}))
#        Col_1   B  Col_3
# ONE       11  12     13
# TWO       21  22     23
# THREE     31  32     33

Mettez à jour l’objet d’origine :inplace

Par défaut, le DataFrame d’origine n’est pas modifié et un nouveau DataFrame est renvoyé.

La définition du paramètre inplace sur True modifie le DataFrame d’origine. Dans ce cas, aucun nouveau DataFrame n’est renvoyé et la valeur de retour est None.

df_copy = df.copy()
df_copy.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'}, inplace=True)
print(df_copy)
#        Col_1   B   C
# Row_1     11  12  13
# TWO       21  22  23
# THREE     31  32  33

Renommer avec des fonctions ou des expressions lambda

Vous pouvez également spécifier des fonctions (objets appelables) dans les paramètres index et columns de la méthode rename().

Par exemple, appliquez une fonction pour convertir les majuscules et les minuscules :

print(df.rename(columns=str.lower, index=str.title))
#         a   b   c
# One    11  12  13
# Two    21  22  23
# Three  31  32  33

Vous pouvez également appliquer des expressions lambda.

print(df.rename(columns=lambda s: s*3, index=lambda s: s + '!!'))
#          AAA  BBB  CCC
# ONE!!     11   12   13
# TWO!!     21   22   23
# THREE!!   31   32   33

Ajoutez un préfixe/suffixe aux noms de colonne :add_prefix(), add_suffix()

Les méthodes add_prefix() et add_suffix() ajoutent des préfixes et des suffixes aux noms de colonne.

La chaîne spécifiée dans l’argument est ajoutée au début ou à la fin des noms de colonne.

print(df.add_prefix('X_'))
#        X_A  X_B  X_C
# ONE     11   12   13
# TWO     21   22   23
# THREE   31   32   33

print(df.add_suffix('_X'))
#        A_X  B_X  C_X
# ONE     11   12   13
# TWO     21   22   23
# THREE   31   32   33

add_prefix() et add_suffix() ne font que renommer les colonnes. Si vous souhaitez ajouter des préfixes ou des suffixes à l’index, spécifiez l’expression lambda dans l’index des arguments avec la méthode rename() comme décrit ci-dessus.

De plus, add_prefix() et add_suffix() n’ont pas d’inplace. Si vous souhaitez mettre à jour l’objet d’origine, écrasez-le comme df = df.add_prefix().

Renommer tous les noms (libellés)

Pour modifier tous les noms, utilisez la méthode set_axis() ou mettez à jour les colonnes/attributs d’index.

set_axis()

Vous pouvez modifier tous les noms de colonne/index par la méthode set_axis() de pandas.DataFrame.

Spécifiez de nouveaux noms de colonne/d’index comme premières étiquettes de paramètre dans un objet de type liste tel qu’une liste ou un tuple.

Définir le paramètre axis sur 0 ou ‘index’ met à jour l’index, et le définir sur 1 ou les colonnes met à jour les colonnes. S’il est omis, l’index est mis à jour.

print(df.set_axis(['Row_1', 'Row_2', 'Row_3'], axis=0))
#         A   B   C
# Row_1  11  12  13
# Row_2  21  22  23
# Row_3  31  32  33

print(df.set_axis(['Row_1', 'Row_2', 'Row_3'], axis='index'))
#         A   B   C
# Row_1  11  12  13
# Row_2  21  22  23
# Row_3  31  32  33

print(df.set_axis(['Col_1', 'Col_2', 'Col_3'], axis=1))
#        Col_1  Col_2  Col_3
# ONE       11     12     13
# TWO       21     22     23
# THREE     31     32     33

print(df.set_axis(['Col_1', 'Col_2', 'Col_3'], axis='columns'))
#        Col_1  Col_2  Col_3
# ONE       11     12     13
# TWO       21     22     23
# THREE     31     32     33

print(df.set_axis(['Row_1', 'Row_2', 'Row_3']))
#         A   B   C
# Row_1  11  12  13
# Row_2  21  22  23
# Row_3  31  32  33

Notez qu’une erreur est générée si la taille (nombre d’éléments) de la liste spécifiée ne correspond pas au nombre de lignes ou de colonnes.

# print(df.set_axis(['Row_1', 'Row_2', 'Row_3', 'Row_4']))
# ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements

Par défaut, le DataFrame d’origine n’est pas modifié et un nouveau DataFrame est renvoyé. La définition du paramètre inplace sur True modifie le DataFrame d’origine.

df_copy = df.copy()
df_copy.set_axis(['Row_1', 'Row_2', 'Row_3'], inplace=True)
print(df_copy)
#         A   B   C
# Row_1  11  12  13
# Row_2  21  22  23
# Row_3  31  32  33

Mettre à jour les attributs colonnes/index de pandas.DataFrame

Vous pouvez également mettre à jour directement les colonnes et les attributs d’index de pandas.DataFrame.

Des listes et des tuples peuvent être affectés aux colonnes et aux attributs d’index.

df.index = ['Row_1', 'Row_2', 'Row_3']
df.columns = ['Col_1', 'Col_2', 'Col_3']
print(df)
#        Col_1  Col_2  Col_3
# Row_1     11     12     13
# Row_2     21     22     23
# Row_3     31     32     33

Notez qu’une erreur est levée si la taille (nombre d’éléments) de la liste ne correspond pas au nombre de lignes et de colonnes.

# df.index = ['Row_1', 'Row_2', 'Row_3', 'Row_4']
# ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements

Pour les pandas.Série

Vous pouvez modifier le nom de l’étiquette (index) de pandas.Series comme indiqué dans les exemples précédents de pandas.DataFrame.

Par exemple, créez pandas.Series comme suit :

s = pd.Series([1, 2, 3], index=['ONE', 'TWO', 'THREE'])
print(s)
# ONE      1
# TWO      2
# THREE    3
# dtype: int64

pandas.Series.renommer()

print(s.rename({'ONE': 'a', 'THREE': 'c'}))
# a      1
# TWO    2
# c      3
# dtype: int64

print(s.rename(str.lower))
# one      1
# two      2
# three    3
# dtype: int64

pandas.Series.add_prefix(), pandas.Series.add_suffix()

print(s.add_prefix('X_'))
# X_ONE      1
# X_TWO      2
# X_THREE    3
# dtype: int64

print(s.add_suffix('_X'))
# ONE_X      1
# TWO_X      2
# THREE_X    3
# dtype: int64

pandas.Series.set_axis()

print(s.set_axis(['a', 'b', 'c']))
# a    1
# b    2
# c    3
# dtype: int64

Mettre à jour les attributs d’index de pandas.Series

s.index = ['a', 'b', 'c']
print(s)
# a    1
# b    2
# c    3
# dtype: int64