Vai al contenuto principale

Tutorial su Pandas reset_index

Impara il metodo pandas reset_index() per reimpostare l'indice di un DataFrame. Esplora le diverse opzioni disponibili con questo metodo e come reimpostare l'indice per DataFrame semplici e multilivello.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Dopo aver manipolato e filtrato un grande dataset, potresti ottenere esattamente il DataFrame di cui hai bisogno. Tuttavia, questo DataFrame mantiene l'indice originale, che può non essere sequenziale. In questi casi, devi reimpostare l'indice del DataFrame.

In questo tutorial parleremo del metodo pandas reset_index(), usato per reimpostare l'indice di un DataFrame. Esploreremo le diverse opzioni disponibili con questo metodo. Inoltre, vedremo come reimpostare l'indice per DataFrame semplici e multilivello.

Per esercitarti a reimpostare l'indice di un DataFrame, useremo un dataset di compagnie aeree. Useremo Datalab di Datacamp, un ambiente interattivo progettato appositamente per la data analysis in Python, perfetto per seguire questo tutorial.

Che cos'è reset_index?

Il metodo reset_index in Pandas reimposta l'indice di un DataFrame a quello predefinito. Dopo operazioni come filtraggio, concatenazione o merge, l'indice potrebbe non essere più sequenziale. Questo metodo aiuta a ripristinare un indice pulito e sequenziale. Se il DataFrame ha un MultiIndex, può rimuovere uno o più livelli.

Sintassi di base:

df.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill="")

Parametri:

  1. level: In un DataFrame multilivello, accetta un nome di livello o una posizione dell'indice di riga che deve essere rimosso dall'indice. Per impostazione predefinita, rimuove tutti i livelli.
  2. drop: Flag booleano. True – L'attuale indice di riga non viene aggiunto come nuova colonna nel DataFrame. False (default) – L'attuale indice di riga viene aggiunto come nuova colonna nel DataFrame.
  3. inplace: Specifica se restituire un nuovo DataFrame o aggiornare quello esistente. È un flag booleano con valore predefinito False.
  4. col_level: Se le colonne hanno più livelli, determina in quale livello inserire le etichette. Per impostazione predefinita, sono inserite nel primo livello.
  5. col_fill: Se le colonne hanno più livelli, determina come nominare gli altri livelli. Se None, il nome dell'indice viene ripetuto.

Restituisce:

DataFrame con il nuovo indice o None se inplace=True.

Come usare reset_index

Se leggi un file CSV usando il metodo pandas read_csv() senza specificare un indice, il DataFrame risultante avrà un indice predefinito basato su interi a partire da 0 e incrementato di 1 per ogni riga successiva.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df

lettura del dataset delle compagnie aeree

In alcuni casi, potresti preferire etichette di riga più descrittive. Per ottenerle, puoi impostare una delle colonne del DataFrame come indice (etichette di riga). Quando usi il metodo read_csv() per caricare dati da un file CSV, specifica la colonna desiderata per l'indice usando il parametro index_col.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv", index_col="Operating Airline IATA Code").head()
df

impostazione della colonna Operating Airline IATA Code come nuovo indice del dataframe

In alternativa, puoi usare il metodo set_index() per impostare come indice qualsiasi colonna di un DataFrame:

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df.set_index("Operating Airline IATA Code", inplace=True)
df

Nota che lo snippet di codice apporterà modifiche al DataFrame originale.

impostare la colonna Operating Airline IATA Code come nuovo indice del dataframe usando il metodo set_index

E se avessi bisogno di ripristinare l'indice numerico predefinito? Qui entra in gioco il metodo di Pandas reset_index().

df.reset_index()

reimpostazione dell'indice del dataframe

L'esempio mostra che, dopo aver impostato la colonna 'Operating Airline IATA Code' come indice, reset_index viene usato per riportare il DataFrame al suo indice intero predefinito.

Applicazioni pratiche di reset_index

Il metodo reset_index() in Pandas è un potente strumento per riorganizzare gli indici dei DataFrame quando lavori con dataset filtrati, DataFrame concatenati o indici multilivello.

Approfondisci il reshaping dei DataFrame da formato wide a long, come impilare e disimpilare righe e colonne e come gestire DataFrame multi-index nel nostro corso online.

Reimpostare dopo il filtraggio

Quando filtri un DataFrame, l'indice originale viene mantenuto. Usando reset_index, puoi reindicizzare il DataFrame filtrato.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")

Filtriamo i dati per selezionare solo le righe in cui il "landing count" è maggiore di 1000. Dopo il filtraggio, gli indici potrebbero non essere sequenziali. Quindi puoi usare il metodo reset_index per reimpostare l'indice del DataFrame filtrato.

filtered_df = df[df["Landing Count"] > 1000].head()
filtered_df

daraframe in cui il "landing count" è maggiore di 1000

L'immagine sopra mostra che il data frame è stato filtrato in base alla condizione applicata, ma l'indice non è sequenziale. Ora, usiamo reset_index per reindicizzare il DataFrame filtrato e garantire un indice sequenziale. Ecco come fare:

filtered_df_reset = filtered_df.reset_index()
filtered_df_reset

L'indice è impostato su sequenziale

Il comportamento predefinito di questo metodo include la sostituzione dell'indice esistente del DataFrame con uno predefinito basato su interi e la conversione del vecchio indice in una nuova colonna con lo stesso nome (o "index" se era senza nome).

Quindi, usa il parametro drop=True, che assicura che il vecchio indice non venga aggiunto come nuova colonna.

filtered_df_reset = filtered_df.reset_index(drop=True)
filtered_df_reset

uso del parametro drop per rimuovere il vecchio indice

Ottimo! Gli indici sono ora reimpostati all'indice intero predefinito (0, 1, 2, …), offrendo un indice pulito e sequenziale.

Concatenazione o merge

Quando combini DataFrame, il DataFrame risultante potrebbe contenere indici duplicati o non sequenziali. Reimpostare l'indice crea un indice pulito e sequenziale.

Supponiamo che tu abbia due DataFrame e voglia concatenarli. Ho creato due DataFrame dal dataset delle compagnie aeree a scopo dimostrativo.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")
split_index = int(df.shape[0] / 2)
df1 = df[:split_index].head()
df2 = df[split_index:].head()

Ecco df1:

dataframe 1 estratto dal dataframe originale

Ecco df2:

dataframe 2 estratto dal dataframe originale

Concatenamo i DataFrame df1 e df2.

df_concat = pd.concat([df1, df2])

dataframe concatenato

I dati mostrano indici non sequenziali. Dobbiamo reimpostare l'indice del DataFrame concatenato per renderlo sequenziale.

Reimpostiamo l'indice del DataFrame usando il metodo reset_index() in pandas.

df_concat.reset_index()

Da rimuovere la colonna index

Ecco il risultato dopo la reimpostazione dell'indice del DataFrame. Il metodo reset_index converte il vecchio indice in una nuova colonna. Per rimuovere questa colonna extra, devi usare il parametro drop=True.

df_concat.reset_index(drop=True)

colonna index rimossa

Gestione dell'indicizzazione multilivello

Per i DataFrame con indicizzazione gerarchica (multilivello), reset_index può essere usato per semplificare il DataFrame convertendo l'indice multilivello in colonne.

Vediamo un esempio di DataFrame con un indice multilivello.

import pandas as pd
df = pd.read_csv(
    "airlines_dataset.csv", index_col=["Aircraft Model", "Operating Airline IATA Code"]
).head()

indici multipli in un dataframe

Se controlli il suo indice, vedrai che non è un indice comune di DataFrame ma un oggetto MultiIndex

indici multipli nel dataframe

Ora, usiamo il metodo pandas reset_index(), che rimuove tutti i livelli di un MultiIndex:

df.reset_index()

il multiindex ora diventa sequenziale

Puoi vedere che entrambi i livelli del MultiIndex sono convertiti in comuni colonne del DataFrame mentre l'indice viene reimpostato a quello predefinito basato su interi.

Puoi anche usare il parametro level per rimuovere livelli selezionati dall'indice del DataFrame. Converte i livelli selezionati in normali colonne del DataFrame, a meno che tu non scelga di eliminare completamente queste informazioni dal DataFrame usando il parametro drop. Vediamolo:

df.reset_index(level=["Aircraft Model"])

Operating Airline IATA Code resta soltanto come indice

L'immagine sopra mostra che "Aircraft Model" è ora una colonna normale del DataFrame. Solo "Operating Airline IATA Code" resta come indice.

Ora, se non vuoi che l'indice indicato nella lista diventi una colonna normale, puoi combinare i parametri drop e level per eliminarlo dal DataFrame.

df.reset_index(level=["Aircraft Model"], drop=True)

rimossa la colonna Aircraft Model

L'indice 'Aircraft Model' è stato rimosso dall'indice e dal DataFrame. L'altro indice, 'Operating Airline IATA Code', è stato mantenuto come indice corrente del DataFrame.

Uso avanzato e suggerimenti

Preservare l'indice

Supponi di unire due DataFrame; il DataFrame unito risultante non avrà più indici sequenziali, come mostrato nel DataFrame qui sotto.

dataframe temporaneo

Reimpostiamo l'indice del DataFrame usando il metodo reset_index() di pandas.

df.reset_index()

da rimuovere la colonna index non necessaria dall'indice

Il parametro drop determina se mantenere il vecchio indice come colonna nel DataFrame dopo la reimpostazione dell'indice o eliminarlo completamente. Per impostazione predefinita (drop=False), il vecchio indice viene mantenuto, come mostrato in tutti gli esempi precedenti. In alternativa, impostando drop=True il vecchio indice viene rimosso dal DataFrame dopo la reimpostazione.

df.reset_index(drop=True)

colonna index eliminata

Operazione inplace

Modifica il DataFrame in place usando il parametro inplace per evitare di creare un nuovo DataFrame.

Supponi di avere il seguente DataFrame:

l'indice non è sequenziale

Impostare il parametro inplace su True assicura che le modifiche vengano applicate direttamente al DataFrame originale, evitando la creazione di un DataFrame separato.

df_concat.reset_index(drop=True, inplace=True)
df_concat

l'indice è sequenziale

Gestione dei duplicati

Gestisci indici duplicati reimpostando e reindicizzando in modo appropriato.

Supponi di avere dati con indici duplicati.

dataframe con indici duplicati

Usare reset_index() con drop=True e inplace=True garantisce che il DataFrame risultante avrà indici continui, a partire da 0 e in aumento sequenziale.

df.reset_index(drop=True, inplace=True)

l'indice è sequenziale

Pandas reset_index: errori comuni e troubleshooting

  1. Indice non si reimposta: Assicurati di non usare il parametro inplace=False se ti aspetti che il DataFrame originale venga modificato. Se inplace è impostato su False, viene restituito un nuovo DataFrame e l'originale resta invariato.
  2. Perdita di dati: Fai attenzione al parametro drop per evitare perdite di dati involontarie. L'eliminazione dell'indice rimuoverà in modo permanente i valori dell'indice corrente.

Esempio pratico di reset_index

Applichiamo quanto abbiamo imparato sulla reimpostazione dell'indice del DataFrame e vediamo come reimpostare l'indice possa essere utile quando si eliminano valori mancanti.

Il nostro dataset delle compagnie aeree non ha valori mancanti, quindi usiamo invece il dataset Film e serie TV su Netflix. Ha valori mancanti, perfetto per dimostrare reset_index().

import pandas as pd
df = pd.read_csv("netflix_shows.csv")
df.head()

dataframe con valori NaN

Puoi vedere che ci sono valori mancanti nel DataFrame. Elimina le righe contenenti valori mancanti usando il metodo dropna().

df.dropna(inplace=True)
df.head()

dataframe senza valori NaN

Le righe contenenti valori NaN sono state rimosse dal DataFrame. Tuttavia, l'indice non è più continuo (0, 1, 2, 4). Reimpostiamolo:

df.reset_index()

da rimuovere la colonna index non necessaria

Ora l'indice è continuo; tuttavia, poiché non abbiamo passato esplicitamente il parametro drop, il vecchio indice è stato convertito in una colonna con il nome predefinito index. Eliminiamo completamente il vecchio indice dal DataFrame:

df.reset_index(drop=True)

il dataset è normale

Abbiamo rimosso completamente il vecchio indice non significativo e l'indice attuale è ora continuo. L'ultimo passaggio è salvare queste modifiche nel nostro DataFrame originale usando il parametro inplace:

df.reset_index(drop=True, inplace=True)

Conclusione

Hai imparato come la funzione reset_index in Pandas gestisce in modo efficiente gli indici dei DataFrame. Che tu stia gestendo dati filtrati, DataFrame concatenati o un indicizzazione multilivello complessa, reset_index assicura un DataFrame pulito e organizzato. I suoi parametri aiutano a gestire diversi scenari di indicizzazione nelle attività di manipolazione dei dati.

Continua a imparare funzioni simili a reset_index con il percorso di carriera Data Analyst with Python di DataCamp. Puoi anche leggere il nostro Tutorial su Python List Index() se stai lavorando con le liste e vuoi imparare la funzione index() applicata alle liste. 


Satyam Tripathi's photo
Author
Satyam Tripathi
LinkedIn
Argomenti
Python

I migliori corsi su pandas

Corso

Manipolazione dei dati con pandas

4 ore
567.9K
Impara a importare e pulire dati, calcolare statistiche e creare visualizzazioni con pandas.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro