• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas merge ile tablolar nasıl birleştirilir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    merge pandas

Garfield

Yönetici
YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
488
Mesajlar
501
AI Seviyesi
Yeni
İki pandas tablosunu birleştirmek için pd.merge() kullanılır. Birleştirme anahtarını on ile belirtir, how ile hangi satırların korunacağını seçersiniz. Örneğin müşteri bilgileri ile siparişleri musteri_id sütununda birleştirdiğinizde, ortak anahtarı taşıyan satırlara ait bilgileri tek tabloda toplayabilirsiniz.

Temel kullanım​


Ön koşul olarak pandas kurulu olmalı ve tablolar DataFrame biçiminde bulunmalıdır. Aşağıdaki örnek varsayımsaldır; iki tabloda da ortak sütun adı musteri_id olarak kabul edilmiştir.

Python:
import pandas as pd

musteriler = pd.DataFrame({
    "musteri_id": [1, 2, 3],
    "ad": ["Ayşe", "Mehmet", "Zeynep"]
})

siparisler = pd.DataFrame({
    "musteri_id": [1, 1, 2, 4],
    "urun": ["Defter", "Kalem", "Çanta", "Kitap"],
    "tutar": [40, 15, 250, 90]
})

sonuc = pd.merge(
    musteriler,
    siparisler,
    on="musteri_id",
    how="inner"
)

print(sonuc)

Bu kodda musteri_id ortak anahtardır. inner birleştirme yalnızca iki tabloda da bulunan anahtarları korur. Bu nedenle 1 ve 2 numaralı müşteriler sonuçta yer alır; sipariş tablosundaki 4 numaralı müşteri musteriler tablosunda bulunmadığı için, 3 numaralı müşteri de siparişi olmadığı için sonuçta görünmez.

Beklenen sonuç mantıksal olarak şöyledir:
musteri_idaduruntutar
1AyşeDefter40
1AyşeKalem15
2MehmetÇanta250
Burada Ayşe'nin iki siparişi olduğu için aynı müşteri bilgisi iki satırda tekrarlanır. Bu bir hata değildir; bir müşterinin birden fazla siparişi varsa, bire-çok birleşimin doğal sonucudur.

Birleştirme türünü seçme​


how değeri, eşleşmeyen satırların sonuçta tutulup tutulmayacağını belirler. Hangi türü seçeceğiniz, hangi tablonun temel liste olduğunuza bağlıdır.
how değeriKorunan satırlarNe zaman kullanılır?
innerİki tabloda eşleşenlerYalnız ortak kayıtları incelemek için
leftSoldaki tablonun tamamıAna listeyi koruyup sağdan bilgi eklemek için
rightSağdaki tablonun tamamıSağdaki tabloyu temel almak için
outerHer iki tablodaki tüm satırlarEksik veya eşleşmeyen kayıtları denetlemek için
Örneğin tüm müşterileri, siparişi olmayanlar da dahil olmak üzere görmek istiyorsanız müşteriler tablosunu sola koyup left kullanın:

Python:
sonuc = pd.merge(
    musteriler,
    siparisler,
    on="musteri_id",
    how="left"
)

Bu durumda Zeynep sonuçta kalır; urun ve tutar sütunlarındaki karşılığı olmayan değerler NaN olur. NaN, eşleşen sipariş bilgisi bulunmadığını gösterir; müşterinin silindiğini veya değerinin sıfır olduğunu kanıtlamaz. Sıfır anlamı gerekiyorsa bunu ayrıca dönüştürmelisiniz.

Sütun adları farklıysa​


Ortak anahtarın iki tabloda farklı adlarla bulunduğu durumda left_on ve right_on kullanılır:

Python:
musteriler_farkli = musteriler.rename(columns={"musteri_id": "id"})

sonuc = pd.merge(
    musteriler_farkli,
    siparisler,
    left_on="id",
    right_on="musteri_id",
    how="left"
)

Bu örnekte soldaki tabloda id, sağdaki tabloda musteri_id anahtar olarak kabul edilir. Anahtar sütunlarının veri türleri de uyumlu olmalıdır. Birinde sayısal değer, diğerinde aynı değerlerin metin olarak tutulması eşleşme üretmeyebilir; birleştirmeden önce dtypes ile türleri kontrol edin.

Aynı adlı diğer sütunları yönetme​


Anahtar dışındaki sütunlar iki tabloda da aynı adla bulunuyorsa pandas çakışmayı belirtmek için son ekler ekler. Bu ekleri kendiniz tanımlayabilirsiniz:

Python:
tablo_a = pd.DataFrame({
    "musteri_id": [1, 2],
    "durum": ["Bekliyor", "Tamamlandı"]
})
tablo_b = pd.DataFrame({
    "musteri_id": [1, 2],
    "durum": ["Tamamlandı", "İptal"]
})

sonuc = pd.merge(
    tablo_a,
    tablo_b,
    on="musteri_id",
    how="left",
    suffixes=("_eski", "_yeni")
)

Örneğin her iki tabloda durum sütunu varsa sonuçta durum_eski ve durum_yeni adlarını görürsünüz. Hangi değerin kullanılacağına karar vermeden bu sütunlardan birini silmeyin; iki değer farklıysa bu durum veri güncelleme sırası veya kayıt tutarsızlığına işaret edebilir.

Birleştirmeyi doğrulama​


Beklenmedik satır çoğalmasını yakalamak için anahtar ilişkisinin beklenen türünü validate ile belirtebilirsiniz:

Python:
sonuc = pd.merge(
    musteriler,
    siparisler,
    on="musteri_id",
    how="left",
    validate="one_to_many"
)

Bu kullanım, soldaki müşteri anahtarının tekil, sağdaki sipariş anahtarının ise aynı müşteri için birden fazla olabileceğini ifade eder. Anahtar ilişkisi bu kurala uymuyorsa işlem hata vererek sessizce yanlış sonuç üretme riskini azaltır. Birleştirmeden sonra sonuc.shape, sonuc.columns ve anahtar sütunundaki eksik değerleri kontrol edin; satır sayısındaki beklenmedik artış çoğunlukla yinelenen anahtar değerlerinden kaynaklanır.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst