Vous pouvez renommer (modifier) les noms de colonnes et/ou d’index dans un 𝐩𝐚𝐧𝐝𝐚𝐬.D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 en utilisant , /ou 𝐒𝐞𝐧𝐭𝐞𝐧𝐭 .
De même, vous pouvez renommer les noms d’index d’un 𝐩𝐚𝐧𝐝𝐚𝐬.S𝐞𝐫𝐢𝐞𝐬 .
La méthode 𝐬𝐞𝐭_𝐢𝐧𝐝𝐞𝐱() , qui définit une colonne existante comme index, est également disponible. Pour plus d’informations, consultez l’article suivant :
L’exemple de code de cet article utilise la version 2.0.3 de pandas . Le code D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 suivant est utilisé comme exemple.
import pandas as pd print(pd.__version__) # 2.0.3 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 les noms de colonnes/index : 𝐫𝐞𝐧𝐚𝐦𝐞()
Vous pouvez utiliser la méthode 𝐫𝐞𝐧𝐚𝐦𝐞() de D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 pour modifier les noms de colonnes/index individuellement.
Utilisation de la base
Spécifiez les noms d’origine et nouveau dans un 𝐝𝐢𝐜𝐭 comme {𝐨𝐫𝐢𝐠𝐢𝐧𝐚𝐥_𝐧𝐚𝐦𝐞 : 𝐧𝐞𝐰_𝐧𝐚𝐦𝐞} pour le 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 et/ou Arguments clés de la méthode 𝐫𝐞𝐧𝐚𝐦𝐞() .
L’argument 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 est utilisé pour modifier les noms de colonnes, et l’argument 𝐢𝐧𝐝𝐞𝐱 est utilisé pour modifier les noms d’index. Si vous souhaitez modifier l’un ou l’autre, vous ne devez préciser qu’un seul argument parmi 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 ou 𝐢𝐧𝐝𝐞𝐱 .
Un nouveau D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 est renvoyé tandis que le D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 d’origine reste identique.
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
Vous pouvez également utiliser le premier argument 𝐦𝐚𝐩𝐩𝐞𝐫 et l’argument 𝐚𝐱𝐢𝐬 pour déterminer s’il faut cibler les noms de lignes ou de colonnes. Si 𝐚𝐱𝐢𝐬 est défini sur 0 ou ‘𝐢𝐧𝐝𝐞𝐱’ , il cible les noms de lignes ; s’il est défini sur 1 ou ‘𝐜𝐨𝐥𝐮𝐦𝐧𝐬’ , il cible les noms de colonnes. Avec cette approche, vous ne pouvez pas modifier simultanément les noms des lignes et des colonnes.
print(df.rename({'A': 'Col_1'}, axis='columns')) # Col_1 B C # ONE 11 12 13 # TWO 21 22 23 # THREE 31 32 33
Modifier plusieurs noms de colonnes/index
Vous pouvez modifier plusieurs noms de colonnes/index à la fois en ajoutant des éléments à 𝐝𝐢𝐜𝐭 .
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
Mettre à jour l’objet d’origine : 𝐢𝐧𝐩𝐥𝐚𝐜𝐞
Par défaut, le D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 d’origine n’est pas modifié et un nouveau D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 est renvoyé.
La définition de l’argument 𝐢𝐧𝐩𝐥𝐚𝐜𝐞 sur T𝐫𝐮𝐞 modifie la valeur d’origine D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 . Dans ce cas, aucun nouveau D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 n’est renvoyé et la valeur de retour est N𝐨𝐧𝐞 .
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 préciser des fonctions (objets appelables) dans les arguments 𝐢𝐧𝐝𝐞𝐱 et 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 de la méthode 𝐫𝐞𝐧𝐚𝐦𝐞() .
Par exemple, vous pouvez appliquer des fonctions pour convertir des chaînes en majuscules ou en 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
Ajouter un préfixe/suffixe aux noms de colonnes : 𝐚𝐝𝐝_𝐩𝐫𝐞𝐟𝐢𝐱() , 𝐚𝐝𝐝_𝐬𝐮𝐟𝐟𝐢𝐱()
Les méthodes 𝐚𝐝𝐝_𝐩𝐫𝐞𝐟𝐢𝐱() et 𝐚𝐝𝐝_𝐬𝐮𝐟𝐟𝐢𝐱() ajoutent des préfixes et des suffixes aux noms de colonnes.
- pandas.DataFrame.add_prefix — documentation de pandas 2.0.3
- pandas.DataFrame.add_suffix — documentation de pandas 2.0.3
Ces méthodes ajoutent la chaîne spécifiée dans l’argument au début ou à la fin des noms de colonnes.
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
Dans la version 2.0.0 , l’argument 𝐚𝐱𝐢𝐬 a été ajouté. S’il est défini sur 0 ou ‘𝐢𝐧𝐝𝐞𝐱’ , il cible les noms de lignes. S’il est défini sur 1 ou ‘𝐜𝐨𝐥𝐮𝐦𝐧𝐬’ , il cible les noms de colonnes. S’il est omis, il cible par défaut les noms de colonnes, comme illustré dans l’exemple précédent.
print(df.add_prefix('X_', axis=0)) # A B C # X_ONE 11 12 13 # X_TWO 21 22 23 # X_THREE 31 32 33 print(df.add_suffix('_X', axis='index')) # A B C # ONE_X 11 12 13 # TWO_X 21 22 23 # THREE_X 31 32 33
Notez que dans les versions antérieures à 2.0.0 , 𝐚𝐝𝐝_𝐩𝐫𝐞𝐟𝐢𝐱() et 𝐚𝐝𝐝_𝐬𝐮𝐟𝐟𝐢𝐱() ne pourra pas renommer que 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 . Pour ajouter des préfixes ou des suffixes à 𝐢𝐧𝐝𝐞𝐱 , vous pouvez utiliser la méthode 𝐫𝐞𝐧𝐚𝐦𝐞() avec une expression lambda dans l’argument 𝐢𝐧𝐝𝐞𝐱 , comme décrit ci-dessus.
De plus, 𝐚𝐝𝐝_𝐩𝐫𝐞𝐟𝐢𝐱() et 𝐚𝐝𝐝_𝐬𝐮𝐟𝐟𝐢𝐱() n’ont pas l’argument 𝐢𝐧𝐩𝐥𝐚𝐜𝐞 . Si vous souhaitez mettre à jour l’objet d’origine, écrasez-le comme 𝐝𝐟 = 𝐝𝐟.𝐚𝐝𝐝_𝐩𝐫𝐞𝐟𝐢𝐱() .
Renommer tous les noms
Pour modifier tous les noms, utilisez la méthode 𝐬𝐞𝐭_𝐚𝐱𝐢𝐬() ou mettre à jour directement les attributs 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 / 𝐢𝐧𝐝𝐞𝐱 .
𝐬𝐞𝐭_𝐚𝐱𝐢𝐬()
Vous pouvez modifier tous les noms de colonnes/index à l’aide de la méthode 𝐬𝐞𝐭_𝐚𝐱𝐢𝐬() de D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 .
Spécifiez de nouveaux noms de colonnes/index pour le premier argument 𝐥𝐚𝐛𝐞𝐥𝐬 sous la forme d’un objet de type liste, tel qu’un 𝐥𝐢𝐬𝐭 ou 𝐭𝐮𝐩𝐥𝐞 .
Définissez l’argument 𝐚𝐱𝐢𝐬 sur 0 ou « 𝐢𝐧𝐝𝐞𝐱 » pour mettre à jour 𝐢𝐧𝐝𝐞𝐱 , et sur 1 ou « 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 » pour mettre à jour 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 . Si elle est omise, la variable est mise à jour par défaut.
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 précise 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, l’ argument D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 d’origine reste inchangé et un nouveau D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 est renvoyé. L’argument 𝐢𝐧𝐩𝐥𝐚𝐜𝐞 est obsolète dans la version 1.5.0 . Si vous souhaitez mettre à jour le D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 d’origine , les notes de publication recommandent de l’écraser en définissant l’argument 𝐜𝐨𝐩𝐲 sur F𝐚𝐥𝐬𝐞 .
df_copy = df.copy() df_copy = df_copy.set_axis(['Row_1', 'Row_2', 'Row_3'], copy=False) 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 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 / 𝐢𝐧𝐝𝐞𝐱 de 𝐩𝐚𝐧𝐝𝐚𝐬.D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞
Vous pouvez également mettre à jour directement les attributs 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 et 𝐢𝐧𝐝𝐞𝐱 de D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 .
Vous pouvez attribuer des listes et des tuples aux attributs 𝐜𝐨𝐥𝐮𝐦𝐧𝐬 et 𝐢𝐧𝐝𝐞𝐱 .
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 générée si la taille (nombre d’éléments) de la liste ne correspond pas au nombre de lignes ou 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
Versez 𝐩𝐚𝐧𝐝𝐚𝐬.S𝐞𝐫𝐢𝐞𝐬
Vous pouvez modifier le nom d’index ( 𝐢𝐧𝐝𝐞𝐱 ) d’un S𝐞𝐫𝐢𝐞𝐬 en utilisant des méthodes similaires à celles utilisées pour un D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 , comme indiqué dans les exemples précédents.
Par exemple, créez un S𝐞𝐫𝐢𝐞𝐬 comme suit :
s = pd.Series([1, 2, 3], index=['ONE', 'TWO', 'THREE']) print(s) # ONE 1 # TWO 2 # THREE 3 # dtype: int64
𝐫𝐞𝐧𝐚𝐦𝐞()
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 — documentation de pandas 2.0.3
- pandas.Series.add_suffix — documentation de pandas 2.0.3
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
𝐬𝐞𝐭_𝐚𝐱𝐢𝐬()
print(s.set_axis(['a', 'b', 'c'])) # a 1 # b 2 # c 3 # dtype: int64
Mettre à jour les attributs 𝐢𝐧𝐝𝐞𝐱 de 𝐩𝐚𝐧𝐝𝐚𝐬.S𝐞𝐫𝐢𝐞𝐬
s.index = ['A', 'B', 'C'] print(s) # A 1 # B 2 # C 3 # dtype: int64
