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

Pandas concat ile tablolar birleştirilirken indeksler nasıl yönetilir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 1
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
İndeksleri nasıl kullanacağınız, birleştirme sonrasında satır kimliklerini korumak mı yoksa yeni ve temiz bir sıra oluşturmak mı istediğinize bağlıdır. Dikey birleştirmede varsayılan olarak eski indeks değerleri korunur; sonuçta aynı indeks numaraları tekrarlanabilir. Genellikle satırları art arda ekliyorsanız ignore_index=True kullanarak yeni bir 0, 1, 2, ... indeksi oluşturabilirsiniz. Yatay birleştirmede ise indeksler eşleştirme anahtarı gibi davranır; bu nedenle indekslerin anlamlı ve uyumlu olması gerekir.

Dikey birleştirmede indeksleri yönetme​


İki tabloyu satır satır birleştirirken axis=0 varsayılandır. Aşağıdaki varsayımsal örnekte indeksler korunur:

Python:
import pandas as pd

tablo1 = pd.DataFrame(
    {"ad": ["Ali", "Ayşe"], "puan": [80, 90]},
    index=[10, 11]
)

tablo2 = pd.DataFrame(
    {"ad": ["Mehmet", "Zeynep"], "puan": [75, 95]},
    index=[10, 11]
)

sonuc = pd.concat([tablo1, tablo2])
print(sonuc)

Çıktıda indeks değerleri 10, 11, 10, 11 olur. Bu durum verilerin kaybolduğu anlamına gelmez; ancak indeks artık her satırı tek başına ayırt eden benzersiz bir değer değildir. İndeksi yalnızca eski tabloların içindeki konumu göstermek için kullanıyorsanız bu tercih edilebilir.

Yeni tabloda sıradan ve benzersiz bir sıra istiyorsanız ignore_index=True ekleyin:

Python:
sonuc = pd.concat(
    [tablo1, tablo2],
    ignore_index=True
)

print(sonuc)

Bu durumda beklenen indeks 0, 1, 2, 3 olur. Eski indeks değerleri atılır; fakat indeks dışındaki sütun verileri korunur. Bu seçenek eski indeksi ayrı bir bilgi olarak saklamaz. Eski indeks önemliyse birleştirmeden önce onu sütuna dönüştürün:

Python:
sonuc = pd.concat(
    [tablo1.reset_index(names="eski_indeks"),
     tablo2.reset_index(names="eski_indeks")],
    ignore_index=True
)

print(sonuc)

Böylece yeni indeks satır sırasını gösterirken eski_indeks sütunu kaynak tablodaki indeks değerini korur.

Hangi seçenek ne zaman kullanılmalı?​


Birleştirme kararını indeksin veri içindeki anlamına göre verin. İndeks yalnızca geçici satır numarasıysa yeni indeks oluşturmak daha temizdir. İndeks müşteri numarası, tarih veya başka bir kimlik taşıyorsa onu korumak ya da açık bir sütuna dönüştürmek gerekir.
DurumÖnerilen kullanımSonuç
Tablolar satır satır ekleniyor ve eski indeks gereksizignore_index=TrueYeni sıra indeksi oluşur
Eski indeks anlamlı bir kimlik taşıyorVarsayılan birleştirme veya indeksi önce sütuna dönüştürmeKimlik korunur
İndekslerin benzersiz olması gerekiyorBirleştirme sonrası index.is_unique ile kontrolTekrarlı indeks fark edilir
Tablolar ortak indeks üzerinden yan yana getiriliyoraxis=1 ve uyumlu indekslerSatırlar indekslere göre hizalanır
Tabloları yatay birleştirirken davranış farklıdır. axis=1 kullanıldığında sütunlar yan yana eklenir ve satırlar indeks değerlerine göre hizalanır:

Python:
sol = pd.DataFrame({"ad": ["Ali", "Ayşe"]}, index=[1, 2])
sag = pd.DataFrame({"puan": [80, 90]}, index=[2, 1])

sonuc = pd.concat([sol, sag], axis=1)
print(sonuc)

Sonuçta indeks sırası 1, 2 olur; puan değerleri de aynı indeks değerine sahip satıra yerleşir. Yani Ali için indeks 1 olduğundan puanı 90 ile eşleşir. Bu işlem satırların mevcut fiziksel sırasına göre değil, indeks etiketlerine göre hizalama yapar.

Yatay birleştirmede indeks sırasını sabitleme​


İki tablonun satırlarını yalnızca mevcut sıralarına göre yan yana koymak istiyorsanız indeksleri önce sıfırlayın:

Python:
sonuc = pd.concat(
    [sol.reset_index(drop=True),
     sag.reset_index(drop=True)],
    axis=1
)

print(sonuc)

Bu yaklaşımda her iki tablo 0, 1, ... sırasına getirilir. Ancak tabloların satır sıralarının gerçekten aynı kayıtları temsil ettiğinden emin olmalısınız. Aksi durumda teknik olarak çalışan fakat yanlış kişiye veya kayda ait değerleri yan yana getiren bir sonuç oluşabilir.

Birleştirme sonrasında kontrol​


İşlemden sonra indeksin beklediğiniz biçimde olup olmadığını açıkça kontrol edin:

Python:
print(sonuc.index)
print("Benzersiz mi:", sonuc.index.is_unique)
print("Sıralı mı:", sonuc.index.is_monotonic_increasing)

is_unique değerinin False olması tek başına hata değildir; yalnızca aynı indeks etiketinin birden fazla satırda bulunduğunu gösterir. İndeksin benzersiz olması gerekiyorsa reset_index(drop=True) ile yeni sıra oluşturabilir veya anlamlı kimlik sütununu kullanarak veriyi yeniden düzenleyebilirsiniz. İndeksin veri kimliği olarak kullanılacağı durumlarda, yalnızca satır numarası üretmek yerine kimlik sütunlarının gerçekten benzersiz olup olmadığını ayrıca denetleyin.
 

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.
Robotlar:
  • Anthropic
Geri
Üst