Padroneggiare il metodo Pandas .explode(): una guida completa
Scopri tutto ciò che devi sapere sul metodo .explode() di pandas: colonne singole e multiple, gestione dei dati annidati ed errori comuni con esempi pratici di codice Python.
Nel mondo della manipolazione dei dati con pandas, il metodo .explode() è spesso uno strumento utile quando si lavora con liste all'interno dei DataFrame. Questo tutorial è un vademecum per padroneggiare il metodo .explode(), dalla meccanica di base alle applicazioni avanzate e agli errori più comuni.
La risposta breve: ecco come funziona .explode()
Se sei qui per una risposta veloce, leggi solo questa sezione. Il metodo .explode() è pensato per espandere gli elementi in una colonna di tipo lista su più righe, trasformando ogni elemento della lista in una riga separata. Per esempio, useremo il seguente DataFrame df per illustrare il processo:
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
Il metodo .explode() espanderà gli elementi della colonna Interests, in questo modo:
# Explode the Interests column
exploded_df = df.explode('Interests')Offerto da
ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Cos'è il metodo Pandas .explode()?
Il metodo .explode() è pensato per semplificare la gestione di dati annidati, come liste o tuple, all'interno dei DataFrame di pandas. Convertendo ogni elemento di una struttura simile a una lista in una riga separata, .explode() migliora l’accessibilità dei dati e li rende pronti per l’analisi.
Come funziona il metodo .explode()?
La funzionalità di .explode() è potente e al tempo stesso semplice, con particolare attenzione alla facilità d’uso e all’efficienza nei compiti di manipolazione dei dati.
Column: specifica la colonna con voci simili a liste da espandere.
ignore_index: se impostato su True, il metodo reimposta l’indice a un indice intero predefinito, aiutando a preservare l’integrità del DataFrame dopo l’espansione. Il valore predefinito è False.
Due modi per usare il metodo Pandas .explode()
Esplodere colonne singole in Pandas
Il caso d’uso più comune prevede l’esplosione di una singola colonna, espandendo di fatto ciascuna delle sue voci simili a liste in righe individuali. Nella sezione della risposta breve, abbiamo visto proprio questo. Rivediamo l’esempio. Qui abbiamo il DataFrame df, che contiene gli ID delle persone e i loro interessi di apprendimento. Come puoi vedere, gli interessi di apprendimento sono formattati come liste.
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
Il metodo .explode() espanderà gli elementi della colonna Interests in righe individuali come segue:
# Explode the Interests column
exploded_df = df.explode('Interests')Offerto da
ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Questo metodo è particolarmente utile per colonne che contengono dati categoriali o più attributi per osservazione.
Esplodere più colonne in Pandas
Potresti anche imbatterti in scenari in cui devi esplodere più colonne all’interno di un DataFrame. Ciò è particolarmente utile quando si lavora con dataset in cui più colonne contengono strutture simili a liste da espandere contemporaneamente. Aggiungiamo una colonna Tools a df per illustrarlo:
ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas', 'NumPy']
2
['Machine Learning', 'AI']
['Scikit-learn', 'TensorFlow']
Per esplodere più colonne, inserisci semplicemente in una lista le colonne specificate da esplodere
# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests','Tools'])Offerto da
ID
Interests
Tools
1
Python
Pandas
1
Data Science
NumPy
2
Machine Learning
Scikit-learn
2
AI
TensorFlow
Questo metodo è particolarmente utile quando si lavora con più colonne che contengono liste. Detto ciò, ci sono alcune insidie in cui potresti imbatterti lavorando con .explode(), che esploreremo nella sezione seguente.
Errori comuni nell'uso di Pandas .explode() e soluzioni
Colonne duplicate esplose
Un’insidia comune quando si lavora con .explode() è esplodere per sbaglio colonne duplicate durante l’uso del metodo. Ricorda: assicurati sempre che l’elenco delle colonne che aggiungi sia univoco!
Spesso, potresti avere righe nei tuoi DataFrame che sono stringhe ma sembrano liste. Tentare di esplodere una colonna con stringhe che assomigliano a liste, come "['Python', 'AI']", non produce alcun cambiamento perché il metodo .explode() si aspetta oggetti realmente simili a liste, non stringhe che sembrano liste. Ecco un esempio di come potrebbe apparire e una soluzione! Immaginiamo che df abbia i seguenti valori:
ID
Interests
1
"['Python', 'Data Science']"
2
"['Machine Learning', 'AI']"
Come puoi vedere, la colonna Interests ha valori che sono stringhe che sembrano liste. Usare .explode() su Interests non comporterebbe alcun cambiamento poiché i valori sono stringhe singole. Per risolvere, convertiamo i valori di Interests in liste.
import ast
df['Interests']= df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')print(exploded_df)# This will workOfferto da
Lunghezze non corrispondenti in più colonne
Quando lavori con i DataFrame di pandas, un’insidia comune è imbattersi in righe in cui le strutture simili a liste nelle colonne specificate per l’esplosione hanno lunghezze non corrispondenti. Questa discrepanza può portare a dati disallineati o incompleti dopo l’uso del metodo .explode() su più colonne. Ad esempio, immaginiamo che df sia così:
ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas']
2
['Machine Learning']
['Scikit-learn', 'TensorFlow']
Come si vede, le colonne Interests e Tools contengono liste di lunghezze diverse. Usare .explode() su queste colonne così com’è genererebbe un errore, poiché le colonne devono avere un numero corrispondente di valori nelle liste. Per risolvere, puoi riempire le liste con None usando una funzione personalizzata, come qui:
# Function to pad lists to the same lengthdefpad_lists(row):
max_len =max(len(row['Interests']),len(row['Tools']))
row['Interests']+=[None]*(max_len -len(row['Interests']))
row['Tools']+=[None]*(max_len -len(row['Tools']))return row
# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)# Now, safely explode both columns
df.explode(['Interests','Tools'])Offerto da
ID
Interests
Tools
1
Python
Pandas
1
Data Science
None
2
Machine Learning
Scikit-learn
2
None
TensorFlow
Considerazioni finali
In sintesi, il metodo .explode() è utile per spacchettare gli elementi di una lista di valori come righe in un DataFrame Pandas. Per approfondire pandas, dai un’occhiata alle seguenti risorse:
Adel è un formatore e speaker in Data Science, nonché VP dei Media presso DataCamp. Adel ha pubblicato diversi corsi e sessioni di formazione live su analisi dei dati, machine learning e data engineering. È appassionato di diffondere competenze e alfabetizzazione sui dati all'interno delle organizzazioni e di esplorare l'intersezione tra tecnologia e società. Ha un MSc in Data Science and Business Analytics. Nel tempo libero, lo trovi spesso in compagnia del suo gatto Louis.
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.
Nel mondo della manipolazione dei dati con pandas, il metodo
.explode()è spesso uno strumento utile quando si lavora con liste all'interno dei DataFrame. Questo tutorial è un vademecum per padroneggiare il metodo .explode(), dalla meccanica di base alle applicazioni avanzate e agli errori più comuni.La risposta breve: ecco come funziona
.explode()Se sei qui per una risposta veloce, leggi solo questa sezione. Il metodo .explode() è pensato per espandere gli elementi in una colonna di tipo lista su più righe, trasformando ogni elemento della lista in una riga separata. Per esempio, useremo il seguente DataFrame df per illustrare il processo:
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
Il metodo
.explode()espanderà gli elementi della colonnaInterests, in questo modo:ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Cos'è il metodo Pandas
.explode()?Il metodo
.explode()è pensato per semplificare la gestione di dati annidati, come liste o tuple, all'interno dei DataFrame di pandas. Convertendo ogni elemento di una struttura simile a una lista in una riga separata, .explode() migliora l’accessibilità dei dati e li rende pronti per l’analisi.Come funziona il metodo
.explode()?La funzionalità di
.explode()è potente e al tempo stesso semplice, con particolare attenzione alla facilità d’uso e all’efficienza nei compiti di manipolazione dei dati.Column: specifica la colonna con voci simili a liste da espandere.ignore_index: se impostato suTrue, il metodo reimposta l’indice a un indice intero predefinito, aiutando a preservare l’integrità del DataFrame dopo l’espansione. Il valore predefinito èFalse.Due modi per usare il metodo Pandas
.explode()Esplodere colonne singole in Pandas
Il caso d’uso più comune prevede l’esplosione di una singola colonna, espandendo di fatto ciascuna delle sue voci simili a liste in righe individuali. Nella sezione della risposta breve, abbiamo visto proprio questo. Rivediamo l’esempio. Qui abbiamo il DataFrame
df, che contiene gli ID delle persone e i loro interessi di apprendimento. Come puoi vedere, gli interessi di apprendimento sono formattati come liste.ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
Il metodo
.explode()espanderà gli elementi della colonnaInterestsin righe individuali come segue:ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Questo metodo è particolarmente utile per colonne che contengono dati categoriali o più attributi per osservazione.
Esplodere più colonne in Pandas
Potresti anche imbatterti in scenari in cui devi esplodere più colonne all’interno di un DataFrame. Ciò è particolarmente utile quando si lavora con dataset in cui più colonne contengono strutture simili a liste da espandere contemporaneamente. Aggiungiamo una colonna
Toolsadfper illustrarlo:ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas', 'NumPy']
2
['Machine Learning', 'AI']
['Scikit-learn', 'TensorFlow']
Per esplodere più colonne, inserisci semplicemente in una lista le colonne specificate da esplodere
ID
Interests
Tools
1
Python
Pandas
1
Data Science
NumPy
2
Machine Learning
Scikit-learn
2
AI
TensorFlow
Questo metodo è particolarmente utile quando si lavora con più colonne che contengono liste. Detto ciò, ci sono alcune insidie in cui potresti imbatterti lavorando con
.explode(), che esploreremo nella sezione seguente.Errori comuni nell'uso di Pandas
.explode()e soluzioniColonne duplicate esplose
Un’insidia comune quando si lavora con
.explode()è esplodere per sbaglio colonne duplicate durante l’uso del metodo. Ricorda: assicurati sempre che l’elenco delle colonne che aggiungi sia univoco!Esplodere stringhe che sembrano liste
Spesso, potresti avere righe nei tuoi DataFrame che sono stringhe ma sembrano liste. Tentare di esplodere una colonna con stringhe che assomigliano a liste, come
"['Python', 'AI']", non produce alcun cambiamento perché il metodo.explode()si aspetta oggetti realmente simili a liste, non stringhe che sembrano liste. Ecco un esempio di come potrebbe apparire e una soluzione! Immaginiamo chedfabbia i seguenti valori:ID
Interests
1
"['Python', 'Data Science']"
2
"['Machine Learning', 'AI']"
Come puoi vedere, la colonna
Interestsha valori che sono stringhe che sembrano liste. Usare.explode()suInterestsnon comporterebbe alcun cambiamento poiché i valori sono stringhe singole. Per risolvere, convertiamo i valori diInterestsin liste.Lunghezze non corrispondenti in più colonne
Quando lavori con i DataFrame di pandas, un’insidia comune è imbattersi in righe in cui le strutture simili a liste nelle colonne specificate per l’esplosione hanno lunghezze non corrispondenti. Questa discrepanza può portare a dati disallineati o incompleti dopo l’uso del metodo
.explode()su più colonne. Ad esempio, immaginiamo chedfsia così:ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas']
2
['Machine Learning']
['Scikit-learn', 'TensorFlow']
Come si vede, le colonne
InterestseToolscontengono liste di lunghezze diverse. Usare.explode()su queste colonne così com’è genererebbe un errore, poiché le colonne devono avere un numero corrispondente di valori nelle liste. Per risolvere, puoi riempire le liste conNoneusando una funzione personalizzata, come qui:ID
Interests
Tools
1
Python
Pandas
1
Data Science
None
2
Machine Learning
Scikit-learn
2
None
TensorFlow
Considerazioni finali
In sintesi, il metodo
.explode()è utile per spacchettare gli elementi di una lista di valori come righe in un DataFrame Pandas. Per approfondire pandas, dai un’occhiata alle seguenti risorse: