La réponse actuellement sélectionnée ne mentionne pas la rename_axis
méthode qui peut être utilisée pour renommer les niveaux d'index et de colonne.
Pandas a une certaine bizarrerie lorsqu'il s'agit de renommer les niveaux de l'index. Il existe également une nouvelle méthode DataFrame rename_axis
disponible pour modifier les noms de niveau d'index.
Jetons un œil à un DataFrame
df = pd.DataFrame({'age':[30, 2, 12],
'color':['blue', 'green', 'red'],
'food':['Steak', 'Lamb', 'Mango'],
'height':[165, 70, 120],
'score':[4.6, 8.3, 9.0],
'state':['NY', 'TX', 'FL']},
index = ['Jane', 'Nick', 'Aaron'])
Ce DataFrame a un niveau pour chacun des index de ligne et de colonne. L'index de ligne et de colonne n'a pas de nom. Modifions le nom du niveau d'index de ligne en «noms».
df.rename_axis('names')
La rename_axis
méthode a également la possibilité de modifier les noms de niveau de colonne en modifiant le axis
paramètre:
df.rename_axis('names').rename_axis('attributes', axis='columns')
Si vous définissez l'index avec certaines des colonnes, le nom de la colonne deviendra le nouveau nom de niveau d'index. Ajoutons aux niveaux d'indexation de notre DataFrame d'origine:
df1 = df.set_index(['state', 'color'], append=True)
df1
Remarquez que l'index d'origine n'a pas de nom. Nous pouvons toujours utiliser rename_axis
mais devons lui transmettre une liste de la même longueur que le nombre de niveaux d'index.
df1.rename_axis(['names', None, 'Colors'])
Vous pouvez utiliser None
pour supprimer efficacement les noms de niveau d'index.
Les séries fonctionnent de la même manière mais avec quelques différences
Créons une série avec trois niveaux d'index
s = df.set_index(['state', 'color'], append=True)['food']
s
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: food, dtype: object
Nous pouvons utiliser de la rename_axis
même manière que nous l'avons fait avec DataFrames
s.rename_axis(['Names','States','Colors'])
Names States Colors
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: food, dtype: object
Notez qu'il y a un élément supplémentaire de métadonnées sous la série appelée Name
. Lors de la création d'une série à partir d'un DataFrame, cet attribut est défini sur le nom de la colonne.
Nous pouvons passer un nom de chaîne à la rename
méthode pour le changer
s.rename('FOOOOOD')
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: FOOOOOD, dtype: object
Les DataFrames n'ont pas cet attribut et en fait lèveront une exception s'ils sont utilisés comme ceci
df.rename('my dataframe')
TypeError: 'str' object is not callable
Avant pandas 0.21, vous auriez pu rename_axis
renommer les valeurs de l'index et des colonnes. Il est obsolète, alors ne le faites pas
rename_axis
méthode.