J'ai cette Dataframe
:
import pandas as pd
df = pd.DataFrame({'Hugo' : {'age' : 21, 'weight' : 75},
'Bertram': {'age' : 45, 'weight' : 65},
'Donald' : {'age' : 75, 'weight' : 85}}).T
df.index.names = ['name']
age weight
name
Bertram 45 65
Donald 75 85
Hugo 21 75
Je veux changer l'index à la colonne 'age'
:
df.set_index('age', inplace=True)
weight
age
45 65
75 85
21 75
L'ancien nom de la colonne d'index est perdu. Existe-t-il un moyen de modifier l'index sans perdre la colonne d'index d'origine et de retrouver l'ancienne colonne dans la colonne "normale", de sorte qu'elle ressemble à ceci?
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Utilisez reset_index
first puis/ set_index
:
df = df.reset_index().set_index('age')
print (df)
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Ajout du append=True
et avec reset_index
df.set_index('age', append=True).reset_index(level=0)
Out[80]:
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Votre DataFrame df
a name
(= 'Bertram', 'Donald', 'Hugo'
) comme index
C'est-à-dire que votre df
est:
age weight
name
Bertram 45 65
Donald 75 85
Hugo 21 75
Vous pouvez convertir l'index (name
) en une nouvelle colonne dans votre DataFrame df
en utilisant la méthode.reset_index()
.
df.reset_index(inplace=True)
name
devient une colonne et le nouvel index est l'index standard par défaut:
Votre df ressemble à ceci maintenant:
Out[1]:
name age weight
0 Bertram 45 65
1 Donald 75 85
2 Hugo 21 75
Maintenant, vous pouvez changer l'index en age
avec la méthode.set_index()
.
df.set_index('age',inplace=True)
df
is maintenant:
Out[2]:
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Comme le souligne @jezrael ci-dessus, vous pouvez le faire en une seule étape, au lieu de deux, comme ceci:
df = df.reset_index().set_index('age')
Le plus bas est le plus efficace car il ajoute le nouvel index age
et s’assure qu’il est en place
df.set_index('age',append=True,inplace=True)