Comment réinitialiser l'index d'une dataframe avec pandas en python ?

11 août 2021    /    Viewed: 211    /    Comments: 0    /    Edit


Exemples de comment réinitialiser l'index d'une dataframe avec pandas en python:

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

Références


Card image cap
profile-image
Daidalos

Hi, I am Ben.

I have developed this web site from scratch with Django to share with everyone my notes. If you have any ideas or suggestions to improve the site, let me know ! (you can contact me using the form in the welcome page). Thanks!