Pandas 0.21+ Réponse
Des mises à jour importantes ont été apportées au renommage des colonnes dans la version 0.21.
- Le site
rename
méthode a ajouté le axis
qui peut être défini comme columns
ou 1
. Cette mise à jour permet de faire correspondre cette méthode au reste de l'API pandas. Elle possède toujours l'attribut index
et columns
mais vous n'êtes plus obligé de les utiliser.
- Le site
set_axis
méthode avec le inplace
réglé sur False
vous permet de renommer tous les libellés d'index ou de colonnes avec une liste.
Exemples pour Pandas 0.21+.
Construire un échantillon de DataFrame :
df = pd.DataFrame({'$a':[1,2], '$b': [3,4],
'$c':[5,6], '$d':[7,8],
'$e':[9,10]})
$a $b $c $d $e
0 1 3 5 7 9
1 2 4 6 8 10
Utilisation de rename
avec axis='columns'
ou axis=1
df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis='columns')
ou
df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis=1)
Les deux aboutissent à ce qui suit :
a b c d e
0 1 3 5 7 9
1 2 4 6 8 10
Il est encore possible d'utiliser l'ancienne méthode de signature :
df.rename(columns={'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'})
Le site rename
accepte également les fonctions qui seront appliquées à chaque nom de colonne.
df.rename(lambda x: x[1:], axis='columns')
ou
df.rename(lambda x: x[1:], axis=1)
Utilisation de set_axis
avec une liste et inplace=False
Vous pouvez fournir une liste à la set_axis
dont la longueur est égale au nombre de colonnes (ou d'index). Actuellement, inplace
La valeur par défaut est True
mais inplace
La valeur par défaut sera False
dans les prochaines versions.
df.set_axis(['a', 'b', 'c', 'd', 'e'], axis='columns', inplace=False)
ou
df.set_axis(['a', 'b', 'c', 'd', 'e'], axis=1, inplace=False)
Pourquoi ne pas utiliser df.columns = ['a', 'b', 'c', 'd', 'e']
?
Il n'y a rien de mal à affecter directement les colonnes de cette manière. C'est une solution parfaitement adaptée.
L'avantage d'utiliser set_axis
est qu'elle peut être utilisée dans le cadre d'une chaîne de méthodes et qu'elle renvoie une nouvelle copie du DataFrame. Sans elle, vous devriez enregistrer les étapes intermédiaires de la chaîne dans une autre variable avant de réaffecter les colonnes.
# new for pandas 0.21+
df.some_method1()
.some_method2()
.set_axis()
.some_method3()
# old way
df1 = df.some_method1()
.some_method2()
df1.columns = columns
df1.some_method3()
7 votes
Vous pouvez consulter les documents officiels qui traitent du renommage des étiquettes de colonne : pandas.pydata.org/pandas-docs/stable/guide_utilisateur/text.html