Cum să îmbini seturi de date cu pandas
In this tutorial, you'll learn about Cum să îmbini seturi de date cu pandas. We cover key concepts, practical examples, and best practices.
Îmbinarea seturilor de date în pandas se face cu merge (SQL-style), concat (lipire pe axe) și join (pe index), acoperind toate scenariile de combinare a tabelelor.
The Problem
Datele rareori vin într-un singur fișier sau tabelă. De cele mai multe ori ai clienți într-un fișier, comenzi în altul și plăți într-al treilea. Fără instrumente de îmbinare, trebuie să scrii cod manual pentru a asocia rândurile corect.
The Wrong Way
import pandas as pd
clienti = pd.DataFrame({"id": [1, 2], "nume": ["Ana", "Ion"]})
comenzi = pd.DataFrame({"client_id": [1, 2, 1], "total": [100, 200, 300]})
rezultat = clienti.merge(comenzi, left_on="id", right_on="client_id")
print(rezultat)
Problemă: Funcționează pentru cazul simplu, dar nu acoperă tipurile de join (left, outer) și nici combinațiile complexe.
The Right Way
import pandas as pd
clienti = pd.DataFrame({"id": [1, 2, 3], "nume": ["Ana", "Ion", "Ela"]})
comenzi = pd.DataFrame({"client_id": [1, 2, 4], "total": [100, 200, 400]})
# Left join — păstrează toți clienții
left = clienti.merge(comenzi, left_on="id", right_on="client_id", how="left")
print("Left join:\n", left)
# Concat pe rânduri (vertical)
df1 = pd.DataFrame({"a": [1, 2]})
df2 = pd.DataFrame({"a": [3, 4]})
concat = pd.concat([df1, df2], ignore_index=True)
print("\nConcat:\n", concat)
Output:
Left join:
id nume client_id total
0 1 Ana 1.0 100.0
1 2 Ion 2.0 200.0
2 3 Ela NaN NaN
Concat:
a
0 1
1 2
2 3
3 4
Step-by-Step Fix
1. Alege metoda potrivită
merge()— combină pe coloane cheie (SQL-style)concat()— lipește pe rânduri (axis=0) sau coloane (axis=1)join()— combină pe index
2. Specifică tipul de join
# Inner, left, right, outer
df.merge(df2, on="cheie", how="outer")
3. Gestionează coloanele duplicate
df.merge(df2, on="id", suffixes=("_stanga", "_dreapta"))
Prevention Tips
- Verifică tipurile de date ale coloanelor cheie înainte de merge
- Folosește
validate="one_to_many"pentru a detecta duplicate neașteptate - Preferă
merge()în loc dejoin()când coloanele cheie nu sunt index
Common Mistakes
howimplicit ("inner") — pierzi rânduri care nu au potrivire- Coloane cheie cu nume diferite — uită să specifici
left_onșiright_on - Merge pe index când nu trebuie — indexul poate avea valori diferite între DataFrame-uri
concatcuaxis=1când vreiaxis=0— lipește pe coloane în loc de rânduri- Fără
ignore_index=Truela concat — indexul se repetă, cauzând probleme
FAQ
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu pandas pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro