
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
