Exemples de comment réinitialiser l'index d'une dataframe avec pandas en python:
Table des matières
Créer une dataframe
Créons une dataframe avec deux colonnes à l'aide de pandas :
import pandas as pd
import numpy as np
data = np.random.randint(100, size=(20,2))
df = pd.DataFrame(data=data,columns=['A','B'])
donne par exemple
A B
0 56 43
1 52 38
2 78 33
3 57 79
4 80 13
5 14 20
6 79 27
7 11 49
8 68 44
9 7 67
10 61 39
11 46 4
12 94 78
13 38 2
14 29 29
15 34 14
16 18 66
17 11 63
18 30 85
19 3 21
Notez ici que l'index de la dataframe est situé ci-dessus dans la première colonne.
Créons maintenant par exemple un échantillon de données
df = df.sample(5)
donne
A B
15 34 14
17 11 63
8 68 44
11 46 4
0 56 43
On peut voir ici que l'échantillon a un indice aléatoire.
Réinitialiser l'index de la dataframe (cas 1)
Réinitialiser l'index de la dataframe, une solution est d'utiliser pandas.DataFrame.reset_index:
df = df.reset_index()
donne
index A B
0 15 34 14
1 17 11 63
2 8 68 44
3 11 46 4
4 0 56 43
Notez que reset_index() crée également une nouvelle colonne appelée index qui stockait l'index précédent.
Réinitialiser l'index de la dataframe (cas 2)
Si vous ne voulez pas de cette colonne supplémentaire, recréez simplement un nouvel échantillon :
data = np.random.randint(100, size=(20,2))
df = pd.DataFrame(data=data,columns=['A','B'])
df = df.sample(5)
donne par exemple
A B
17 88 80
14 10 25
19 23 26
8 32 45
4 40 51
et ajouter l'option drop=True:
df = df.reset_index(drop=True)
donne ici
A B
0 88 80
1 10 25
2 23 26
3 32 45
4 40 51
Réinitialiser l'index de la dataframe (cas 3)
Pour démarrer l'index à 1 au lieu de 0, une solution est alors de faire :
df.index = df.index + 1
print(df)
donne
A B
1 88 80
2 10 25
3 23 26
4 32 45
5 40 51
ou pour ajouter des nombres incrémentiels :
df.index = df.index + 200
print(df)
donne
A B
201 88 80
202 10 25
203 23 26
204 32 45
205 40 51
Appliquer une fonction sur les indices de la dataframe
Pour appliquer une fonction sur les indices de la dataframe, une solution est de faire comme ceci:
df = df.reset_index()
df['index'] = df['index'].apply(np.sqrt)
df.index = df['index']
df.drop(['index'], axis=1, inplace=True)
donne ici
A B
index
14.177447 88 80
14.212670 10 25
14.247807 23 26
14.282857 32 45
14.317821 40 51
Utiliser une colonne existante de la dataframe comme index
Une autre solution consiste à utiliser une colonne existante de la dataframe comme index avec pandas.DataFrame.reset_index:
data = np.random.randint(100, size=(20,2))
df = pd.DataFrame(data=data,columns=['A','B'])
df = df.set_index('A')
donne par exemple
B
A
30 35
73 48
27 64
39 99
26 43
98 99
5 86
36 75
41 86
32 59
15 84
29 12
99 58
58 7
87 86
12 90
18 8
46 82
2 28
60 17