
utilizzando reset_index(), l’indice (etichetta di riga) di pandas.DataFrame e pandas.Series può essere riassegnato al numero sequenziale (numero di riga) a partire da 0.
Se i numeri di riga vengono utilizzati come indice, è più conveniente reindicizzare quando l’ordine delle righe cambia dopo l’ordinamento o quando un numero manca dopo l’eliminazione di una riga.
Viene anche utilizzato per eliminare l’indice corrente o tornare alla colonna dei dati quando si utilizza il nome della riga (stringa) come indice. Usando set_index() e reset_index(), puoi cambiare l’indice in un’altra colonna.
In questo articolo vengono descritti i seguenti contenuti.
- Utilizzo di base di reset_index()
- Cambia l’indice in un’altra colonna con reset_index() e set_index()
I seguenti dati sono usati come esempio.
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’esempio utilizza pandas.DataFrame, ma pandas.Series fornisce anche reset_index(). L’uso è lo stesso.
Utilizzo di base di reset_index()
Ordina le righe con sort_values() per la spiegazione.
Vedere il seguente articolo per i dettagli sull’ordinamento con sort_values() e 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
Riassegna l’indice a numeri sequenziali a partire da 0 tramite reset_index().
Per impostazione predefinita, l’indice originale viene aggiunto come una nuova colonna.
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
Elimina l’indice originale:drop
Se il parametro drop è impostato su True, l’indice originale viene eliminato.
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
Cambia oggetto originale:inplace
Per configurare predefinito, reset_index() non modifica l’oggetto originale e contiene un nuovo oggetto, ma se l’argomento inplace è impostato su True, l’oggetto originale viene modificato.
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
Cambia l’indice in un’altra colonna con reset_index() e set_index()
Prendi come esempio il caso in cui un nome di riga (stringa) è impostato come indice.
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
Viene impostato reset_index(), i numeri sequenziali vengono impostati sull’indice e l’indice originale viene aggiunto alla colonna di dati.
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
Usa set_index() per cambiare un’altra colonna in un indice.
L’applicazione di set_index() al DataFrame originale eliminerà l’indice originale.
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
Se vuoi mantenere l’indice originale come colonna di dati, puoi usare set_index() dopo 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