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 pdimport numpy as npdata = np.random.randint(100, size=(20,2))df = pd.DataFrame(data=data,columns=['A','B'])
donne par exemple
A B0 56 431 52 382 78 333 57 794 80 135 14 206 79 277 11 498 68 449 7 6710 61 3911 46 412 94 7813 38 214 29 2915 34 1416 18 6617 11 6318 30 8519 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 B15 34 1417 11 638 68 4411 46 40 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 B0 15 34 141 17 11 632 8 68 443 11 46 44 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 B17 88 8014 10 2519 23 268 32 454 40 51
et ajouter l'option drop=True:
df = df.reset_index(drop=True)
donne ici
A B0 88 801 10 252 23 263 32 454 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 + 1print(df)
donne
A B1 88 802 10 253 23 264 32 455 40 51
ou pour ajouter des nombres incrémentiels :
df.index = df.index + 200print(df)
donne
A B201 88 80202 10 25203 23 26204 32 45205 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 Bindex14.177447 88 8014.212670 10 2514.247807 23 2614.282857 32 4514.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
BA30 3573 4827 6439 9926 4398 995 8636 7541 8632 5915 8429 1299 5858 787 8612 9018 846 822 2860 17
