Merge pandas DataFrames
Join two tables on a shared column, just like a SQL join, and choose which rows to keep.
- merge(on="id")
- how="inner", "left", "right" and "outer"
- Handling columns with the same name
- 1 Ada
- 2 Lin
- 1 → 95
- 2 → 88
- 1 Ada 95
- 2 Lin 88
Match rows by a key
I dati collegati tra loro stanno spesso in tabelle diverse, per esempio una con i dati degli studenti e un'altra con i voti. Il metodo merge() combina queste tabelle in base a una colonna comune, in modo simile al JOIN dei database SQL.
Punti chiave
students.merge(scores, on="id")pairs rows with the same id.- The default how=
"inner"keeps only ids found in both tables. - how=
"left"keeps every row from the left table.
Quando si usa?
- Leggere, pulire e trasformare dati in tabella, come file CSV o Excel.
- Analizzare, calcolare statistiche e riassumere i dati per gruppi.
- Preparare i dati per report, grafici o modelli di machine learning.
Codice di esempio
import pandas as pd
students = pd.DataFrame({"id": [1, 2], "name": ["Ada", "Lin"]})
scores = pd.DataFrame({"id": [1, 2], "score": [95, 88]})
print(students.merge(scores, on="id"))
Risultato dell'esecuzione
id name score
0 1 Ada 95
1 2 Lin 88
Spiegazione del codice
Il parametro on="id" indica la colonna id come chiave per collegare le due tabelle. Per impostazione predefinita merge() esegue un inner join, cioè tiene solo gli id presenti in entrambe le tabelle e ne unisce le colonne in una tabella di risultato. Prima di unire, conviene controllare il tipo della colonna chiave e gli eventuali valori duplicati per evitare risultati sbagliati.
Modifica i valori ed esegui il programma nel compilatore Python online CodeUtility senza installare Python.
Esercizi di approfondimento
Prova a modificare il codice seguendo i suggerimenti qui sotto. Cambiare il codice e osservare il risultato ti aiuta a capire molto più che leggerlo soltanto.
- Aggiungi righe, colonne e qualche valore mancante ai dati di esempio.
- Combina filtro, ordinamento e groupby per creare un piccolo report.
- Leggi un file di dati reale, controlla il tipo di ogni colonna e gestisci i valori non validi.