
En utilisant reset_index(), l’index (étiquette de ligne) de pandas.DataFrame et pandas.Series peut être réaffecté au numéro séquentiel (numéro de ligne) à partir de 0.
Si les numéros de ligne sont utilisés comme index, il est plus pratique de réindexer lorsque l’ordre des lignes change après le tri ou lorsqu’un numéro manque après la suppression d’une ligne.
Il est également utilisé pour supprimer l’index actuel ou revenir à la colonne de données lors de l’utilisation du nom de ligne (chaîne) comme index. En utilisant set_index() et reset_index(), vous pouvez modifier l’index vers une autre colonne.
Cet article décrit le contenu suivant.
- Utilisation de base de reset_index()
- Changez l’index d’une autre colonne avec reset_index() et set_index()
Les données suivantes sont utilisées à titre d’exemple.
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv')
print(df)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
L’exemple utilise pandas.DataFrame, mais pandas.Series fournit également reset_index(). L’utilisation est la même.
Utilisation de base de reset_index()
Triez les lignes avec sort_values() pour l’explication.
Consultez l’article suivant pour plus de détails sur le tri avec sort_values() et sort_index().
df.sort_values('state', inplace=True)
print(df)
# name age state point
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 3 Dave 68 TX 70
Réassignez l’index aux numéros séquentiels à partir de 0 par reset_index().
Par défaut, l’index d’origine est ajouté en tant que nouvelle colonne.
df_r = df.reset_index()
print(df_r)
# index name age state point
# 0 1 Bob 42 CA 92
# 1 2 Charlie 18 CA 70
# 2 4 Ellen 24 CA 88
# 3 0 Alice 24 NY 64
# 4 5 Frank 30 NY 57
# 5 3 Dave 68 TX 70
Supprimez l’index d’origine :drop
Si le paramètre drop est défini sur True, l’index d’origine est supprimé.
df_r = df.reset_index(drop=True)
print(df_r)
# name age state point
# 0 Bob 42 CA 92
# 1 Charlie 18 CA 70
# 2 Ellen 24 CA 88
# 3 Alice 24 NY 64
# 4 Frank 30 NY 57
# 5 Dave 68 TX 70
Modifier l’objet d’origine :inplace
Par défaut, reset_index() ne modifie pas l’objet d’origine et renvoie un nouvel objet, mais si l’argument inplace est défini sur True, l’objet d’origine est modifié.
df.reset_index(inplace=True, drop=True)
print(df)
# name age state point
# 0 Bob 42 CA 92
# 1 Charlie 18 CA 70
# 2 Ellen 24 CA 88
# 3 Alice 24 NY 64
# 4 Frank 30 NY 57
# 5 Dave 68 TX 70
Changez l’index d’une autre colonne avec reset_index() et set_index()
Prenons comme exemple le cas où un nom de ligne (chaîne) est défini comme index.
df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0)
print(df)
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Charlie 18 CA 70
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
En utilisant reset_index(), des numéros séquentiels sont définis sur l’index et l’index d’origine est ajouté à la colonne de données.
df_r = df.reset_index()
print(df_r)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
Utilisez set_index() pour changer une autre colonne en index.
L’application de set_index() au DataFrame d’origine supprimera l’index d’origine.
df_s = df.set_index('state')
print(df_s)
# age point
# state
# NY 24 64
# CA 42 92
# CA 18 70
# TX 68 70
# CA 24 88
# NY 30 57
Si vous souhaitez conserver l’index d’origine en tant que colonne de données, vous pouvez utiliser set_index() après reset_index().
df_rs = df.reset_index().set_index('state')
print(df_rs)
# name age point
# state
# NY Alice 24 64
# CA Bob 42 92
# CA Charlie 18 70
# TX Dave 68 70
# CA Ellen 24 88
# NY Frank 30 57
