Skip to content

Cum să îmbini seturi de date cu pandas

DodaTech Updated 2025-01-15 2 min read

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 de join() când coloanele cheie nu sunt index

Common Mistakes

  1. how implicit ("inner") — pierzi rânduri care nu au potrivire
  2. Coloane cheie cu nume diferite — uită să specifici left_on și right_on
  3. Merge pe index când nu trebuie — indexul poate avea valori diferite între DataFrame-uri
  4. concat cu axis=1 când vrei axis=0 — lipește pe coloane în loc de rânduri
  5. Fără ignore_index=True la concat — indexul se repetă, cauzând probleme

FAQ

### Care e diferența dintre merge și join?

merge() combină pe coloane; join() combină pe index. merge() este mai flexibil și mai explicit.

### Cum fac un merge pe mai multe coloane?

Folosește df.merge(df2, on=["coloana1", "coloana2"]).

### Ce face pd.concat cu axis=1?

Lipește DataFrame-urile orizontal (pe coloane), similar cu un join pe index.

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