Ana içeriğe atla

pandas’ta DataFrame’leri Birleştirme: merge(), concat() & join()

Pratik örneklerle concat(), merge() ve join() kullanarak pandas’ta DataFrame’leri nasıl birleştireceğinizi öğrenin.
Güncel 16 Nis 2026  · 13 dk. oku

Hiç bir Kaggle yarışmasını çözmeyi denediniz mi? Eğer denediyseniz, çoğu yarışmada size sağlanan verilerin birden fazla dosyada bulunduğunu ve bazı sütunların birden fazla dosyada tekrarlandığını fark etmiş olabilirsiniz. Peki aklınıza gelen ilk şey nedir? Elbette onları birleştirmek!

Bu eğitimde, birkaç standart pandas birleştirme tekniğini pratik edeceksiniz. Daha spesifik olarak şunları öğreneceksiniz:

  • DataFrame’leri satır veya sütun bazında birleştirmek.
  • Belirli anahtarlar üzerinde left join, inner join gibi farklı mantıklarla DataFrame’leri birleştirmek.
  • DataFrame’leri indeks üzerinden join etmek.
  • pandas’ın sunduğu zaman serisi dostu birleştirme yöntemleri

Bu süreçte, birleştirme öncesi ve sonrasında ihtiyaç duyacağınız birkaç püf noktasını da öğreneceksiniz.

Özet

  • DataFrame’leri dikey (satırlar) veya yatay (sütunlar) olarak istiflemede pd.concat() kullanın
  • SQL join’larına benzer şekilde ortak sütunlarda birleştirme için pd.merge() kullanın
  • Join türünü how parametresiyle belirtin: 'inner', 'outer', 'left' veya 'right'
  • İndeks tabanlı DataFrame birleştirmeleri için .join() kullanın
  • En yakın anahtarla eşleştirme gereken zaman serisi verileri için pd.merge_asof() kullanın

pandas ile Birleştirme

DataFrame’leri birleştirmek ve kaynaştırmak, veri analizi ve makine öğrenmesi görevlerine başlarken temel işlemdir. Hemen her durumda veriler birden fazla kaynaktan ve dosyadan geldiği için, her Veri Analisti veya Veri Bilimcisinin ustalaşması gereken araç setlerinden biridir. Tüm verileri belirli bir join mantığıyla tek bir yerde toplamanız ve ardından analize başlamanız gerekebilir. SQL join’larıyla çalışanlar bu görevin önemini iyi bilir. Hatta bazı veriler üzerinde makine öğrenmesi modeli kurmak istediğinizde, birden fazla csv dosyasını tek bir DataFrame’de birleştirmeniz gerekebilir.

Neyse ki Python’daki en popüler kütüphane olan pandas imdadınıza yetişiyor! pandas, Series ve DataFrame’leri birleştirmeyi kolaylaştıran çeşitli olanaklar sunar; indeksler için küme mantığı ve join/merge türü işlemlerde ilişkisel cebir işlevselliği sağlar.

Bu eğitimdeki kodu çevrimiçi olarak çalıştırın ve düzenleyin

Kodu çalıştır

pandas Concatenate

Eğitim boyunca kullanacağınız kütüphaneyi içe aktararak başlayın: pandas

import pandas as pd

Bu eğitimde tüm işlemleri oluşturacağınız örnek (dummy) DataFrame’ler üzerinde yapacaksınız. Bir DataFrame oluşturmak için şu şekilde bir Python sözlüğü kullanabilirsiniz:

dummy_data1 = {
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': ['A', 'C', 'E', 'G', 'I'],
        'Feature2': ['B', 'D', 'F', 'H', 'J']}

Burada dummy_data1 sözlüğünün anahtarları sütun adlarıdır ve listedeki değerler her bir gözlem ya da satıra karşılık gelen verilerdir. Bunu bir pandas DataFrame’ine dönüştürmek için pandas’ın DataFrame() fonksiyonunu ve sütunları adlandırmak için columns argümanını kullanacaksınız:

df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2'])

df1
  id Feature1 Feature2
0 1 A B
1 2 C D
2 3 E F
3 4 G H
4 5 I J

Gördüğünüz gibi artık id, Feature1 ve Feature2 adlı üç sütunlu bir DataFrame’iniz var. pandas, satır etiketleri olarak dahili bir isimsiz sütun daha oluşturur. Bir önceki df1 DataFrame’ine benzer şekilde iki DataFrame daha, df2 ve df3, oluşturacaksınız:

dummy_data2 = {
        'id': ['1', '2', '6', '7', '8'],
        'Feature1': ['K', 'M', 'O', 'Q', 'S'],
        'Feature2': ['L', 'N', 'P', 'R', 'T']}
df2 = pd.DataFrame(dummy_data2, columns = ['id', 'Feature1', 'Feature2'])

df2
  id Feature1 Feature2
0 1 K L
1 2 M N
2 6 O P
3 7 Q R
4 8 S T
dummy_data3 = {
        'id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'Feature3': [12, 13, 14, 15, 16, 17, 15, 12, 13, 23]}
df3 = pd.DataFrame(dummy_data3, columns = ['id', 'Feature3'])

df3
  id Feature3
0 1 12
1 2 13
2 3 14
3 4 15
4 5 16
5 7 17
6 8 15
7 9 12
8 10 13
9 11 23

 concat()

DataFrame’leri yalnızca satır bazında birleştirmek için pandas’taki concat() fonksiyonunu kullanabilirsiniz. concat() fonksiyonuna argüman olarak DataFrame adlarını bir liste içinde geçirmeniz gerekir:

df_row = pd.concat([df1, df2])

df_row
  id Feature1 Feature2
0 1 A B
1 2 C D
2 3 E F
3 4 G H
4 5 I J
0 1 K L
1 2 M N
2 6 O P
3 7 Q R
4 8 S T

df1 ve df2 DataFrame’lerinin artık satır bazında tek bir df_row DataFrame’inde birleştirildiğini görebilirsiniz. Ancak satır etiketleri hatalı görünüyor. Satır etiketlerinin join’e göre otomatik ayarlanmasını isterseniz, concat() fonksiyonunu çağırırken ignore_index argümanını True olarak ayarlamalısınız:

df_row_reindex = pd.concat([df1, df2], ignore_index=True)

df_row_reindex
  id Feature1 Feature2
0 1 A B
1 2 C D
2 3 E F
3 4 G H
4 5 I J
5 1 K L
6 2 M N
7 6 O P
8 7 Q R
9 8 S T

Artık satır etiketleri doğru!

pandas ayrıca, birleştirmeden sonra DataFrame’leri bir anahtarla etiketleme seçeneği de sunar; böylece hangi verinin hangi DataFrame’den geldiğini bilebilirsiniz. Bunu, keys adlı ek argümana DataFrame etiket adlarını bir liste olarak vererek sağlayabilirsiniz. Burada aynı birleştirmeyi df1 ve df2 DataFrame’leri için sırasıyla x ve y anahtarlarıyla yapacaksınız.

frames = [df1,df2]
df_keys = pd.concat(frames, keys=['x', 'y'])

df_keys
    id Feature1 Feature2
x 0 1 A B
1 2 C D
2 3 E F
3 4 G H
4 5 I J
y 0 1 K L
1 2 M N
2 6 O P
3 7 Q R
4 8 S T

Anahtarları belirtmek, belirli bir DataFrame’e karşılık gelen verilerin alınmasını da kolaylaştırır. y etiketiyle işaretlenmiş df2 DataFrame’inin verilerini loc yöntemiyle alabilirsiniz:

df_keys.loc['y']
  id Feature1 Feature2
0 1 K L
1 2 M N
2 6 O P
3 7 Q R
4 8 S T

Ayrıca concat()’e bir sözlük de geçebilirsiniz; bu durumda sözlük anahtarları, (başka anahtarlar belirtilmedikçe) keys argümanı için kullanılır:

pieces = {'x': df1, 'y': df2}

df_piece = pd.concat(pieces)

df_piece
    id Feature1 Feature2
x 0 1 A B
1 2 C D
2 3 E F
3 4 G H
4 5 I J
y 0 1 K L
1 2 M N
2 6 O P
3 7 Q R
4 8 S T

concat()’ın verinin tam bir kopyasını oluşturduğunu ve bu fonksiyonun sürekli yeniden kullanılmasının ciddi bir performans kaybına yol açabileceğini not etmek gerekir. Büyük ölçekli veri işlemleri için yüksek performanslı veri işleme için pandas 2.0 ve polars seçeneklerini değerlendirin. İşlemi birçok veri kümesi üzerinde kullanmanız gerekiyorsa, liste üreteci kullanın.

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)

DataFrame’leri sütun bazında birleştirmek için axis parametresini 1 olarak belirtebilirsiniz:

df_col = pd.concat([df1,df2], axis=1)

df_col
  id Feature1 Feature2 id Feature1 Feature2
0 1 A B 1 K L
1 2 C D 2 M N
2 3 E F 6 O P
3 4 G H 7 Q R
4 5 I J 8 S T

pandas Merge DataFrame’ler

DataFrame’lerle ilgili bir diğer yaygın işlem de merge (birleştirme) işlemidir. İki DataFrame, aynı varlık hakkında farklı türde bilgiler tutabilir ve bazı ortak özellik/sütunlarla ilişkilendirilebilir. Bu DataFrame’leri birleştirmek için pandas, concat(), merge(), join() gibi birden çok fonksiyon sağlar. Bu bölümde pandas’ın merge() fonksiyonunu kullanmayı pratik edeceksiniz.

Satır bazında df1 ve df2’yi birleştirerek oluşturduğunuz df_row ile df3’ü, ortak sütun (veya anahtar) olan id üzerinde birleştirebilirsiniz. Bunun için merge() fonksiyonuna DataFrame adlarını ve ortak sütun adı olan id’yi belirtmek üzere ek on argümanını geçin:

df_merge_col = pd.merge(df_row, df3, on='id')

df_merge_col
  id Feature1 Feature2 Feature3
0 1 A B 12
1 1 K L 12
2 2 C D 13
3 2 M N 13
4 3 E F 14
5 4 G H 15
6 5 I J 16
7 7 Q R 17
8 8 S T 15

Artık DataFrame’lerin, her ikisinin de id sütununda bulunan ortak değerlere göre tek bir DataFrame’de birleştiğini görebilirsiniz. Örneğin burada id değeri 1, df_row DataFrame’inde hem A, B hem de K, L ile bulunduğundan, df_merge_col adlı nihai DataFrame’de iki kez tekrarlandı; Feature3’ün 12 değeri ise df3 DataFrame’inden geldi ve tekrarlandı.

Birleştirmek istediğiniz sütunların adları farklı olabilir (bu örnekteki gibi değil). Bu tür birleştirmeler için, left_on argümanını sol DataFrame’deki sütun adı, right_on argümanını sağ DataFrame’deki sütun adı olarak belirtmelisiniz, örneğin:

df_merge_difkey = pd.merge(df_row, df3, left_on='id', right_on='id')

df_merge_difkey
  id Feature1 Feature2 Feature3
0 1 A B 12
1 1 K L 12
2 2 C D 13
3 2 M N 13
4 3 E F 14
5 4 G H 15
6 5 I J 16
7 7 Q R 17
8 8 S T 15

pd.concat() kullanarak bir DataFrame’e satır da ekleyebilirsiniz. Önce satır verileriyle yeni bir DataFrame oluşturun, sonra orijinal DataFrame ile birleştirin:

add_row = pd.DataFrame([['10', 'X1', 'X2', 'X3']], 
                       columns=['id', 'Feature1', 'Feature2', 'Feature3'])

df_add_row = pd.concat([df_merge_col, add_row], ignore_index=True)

df_add_row
  id Feature1 Feature2 Feature3
0 1 A B 12
1 1 K L 12
2 2 C D 13
3 2 M N 13
4 3 E F 14
5 4 G H 15
6 5 I J 16
7 7 Q R 17
8 8 S T 15
9 10 X1 X2 X3

pandas Join Türleri

Bu bölümde, ortak bir sütun/anahtar temelinde pandas DataFrame’lerini birleştirmek için kullanılabilen farklı join mantıklarını pratik edeceksiniz. Bu join’ların mantığı, SQL’de tabloları birleştirirken kullandıklarınıza oldukça benzer. SQL’de inner ve outer join kavramlarına aşinaysanız, bu kavramlar size tanıdık gelecektir.

Join Türü SQL Karşılığı Sonuç Kullanım Amacı
inner INNER JOIN Yalnızca her iki DataFrame’de eşleşen satırlar Yalnızca her iki tabloda da bulunan kayıtları istediğinizde
left LEFT OUTER JOIN Soldaki tüm satırlar + sağdan eşleşenler Birincil DataFrame’deki tüm kayıtları korumak istediğinizde
right RIGHT OUTER JOIN Sağdaki tüm satırlar + soldan eşleşenler İkincil DataFrame’deki tüm kayıtları korumak istediğinizde
outer FULL OUTER JOIN Her iki DataFrame’den tüm satırlar Her iki tablonun tam birleşimine ihtiyaç duyduğunuzda

Full Outer Join

FULL OUTER JOIN, sol ve sağ outer join sonuçlarının birleşimidir. Birleştirilen DataFrame, her iki DataFrame’den de tüm kayıtları içerir ve her iki tarafta eksik eşleşmeler için NaN değerleri ile doldurur. merge() fonksiyonunda how argümanını outer olarak belirterek full outer join yapabilirsiniz:

df_outer = pd.merge(df1, df2, on='id', how='outer')

df_outer
  id Feature1_x Feature2_x Feature1_y Feature2_y
0 1 A B K L
1 2 C D M N
2 3 E F NaN NaN
3 4 G H NaN NaN
4 5 I J NaN NaN
5 6 NaN NaN O P
6 7 NaN NaN Q R
7 8 NaN NaN S T

Ortaya çıkan DataFrame’in her iki tablodaki tüm kayıtları içerdiğini ve eksik eşleşmelerde NaN değerleri bulunduğunu görebilirsiniz. Dikkat edilmesi gereken bir diğer nokta ise, hangi sütunun hangi DataFrame’den geldiğini göstermek için sütun adlarına eklenen soneklerdir. Varsayılan sonekler x ve y’dir; ancak merge() fonksiyonunda suffixes argümanını belirterek bunları değiştirebilirsiniz:

df_suffix = pd.merge(df1, df2, left_on='id',right_on='id',how='outer',suffixes=('_left','_right'))

df_suffix
  id Feature1_left Feature2_left Feature1_right Feature2_right
0 1 A B K L
1 2 C D M N
2 3 E F NaN NaN
3 4 G H NaN NaN
4 5 I J NaN NaN
5 6 NaN NaN O P
6 7 NaN NaN Q R
7 8 NaN NaN S T

Inner Join

INNER JOIN, yalnızca hem A hem de B DataFrame’lerinde eşleşen kayıt kümesini üretir. Inner join yapmak için merge() fonksiyonunun how argümanına inner geçmeniz gerekir:

df_inner = pd.merge(df1, df2, on='id', how='inner')

df_inner
  id Feature1_x Feature2_x Feature1_y Feature2_y
0 1 A B K L
1 2 C D M N

Right Join

RIGHT JOIN, B DataFrame’inden (sağ DataFrame) tüm kayıtları ve A DataFrame’inde (sol DataFrame) eşleşen kayıtları (varsa) üretir. Eşleşme yoksa sağ tarafta null bulunur. Right join yapmak için merge() fonksiyonunun how argümanına right geçmelisiniz:

df_right = pd.merge(df1, df2, on='id', how='right')

df_right
  id Feature1_x Feature2_x Feature1_y Feature2_y
0 1 A B K L
1 2 C D M N
2 6 NaN NaN O P
3 7 NaN NaN Q R
4 8 NaN NaN S T

Left Join

LEFT JOIN, A DataFrame’inden (sol DataFrame) tüm kayıtları ve B DataFrame’inde (sağ DataFrame) eşleşen kayıtları (varsa) üretir. Eşleşme yoksa sol tarafta null bulunur. Left join yapmak için merge() fonksiyonunun how argümanına left geçmelisiniz:

df_left = pd.merge(df1, df2, on='id', how='left')

df_left
  id Feature1_x Feature2_x Feature1_y Feature2_y
0 1 A B K L
1 2 C D M N
2 3 E F NaN NaN
3 4 G H NaN NaN
4 5 I J NaN NaN

İndekste Join

Bazen join’i indeksler veya satır etiketleri üzerinde gerçekleştirmeniz gerekebilir. Bunu yapmak için, right_index (sağ DataFrame’in indeksleri) ve left_index (sol DataFrame’in indeksleri) argümanlarını True olarak belirtmelisiniz:

df_index = pd.merge(df1, df2, right_index=True, left_index=True)

df_index
  id_x Feature1_x Feature2_x id_y Feature1_y Feature2_y
0 1 A B 1 K L
1 2 C D 2 M N
2 3 E F 6 O P
3 4 G H 7 Q R
4 5 I J 8 S T

pandas Join

pandas DataFrame.join() yöntemi, DataFrame’leri benzersiz indeksler üzerinden birleştirmede kullanılır. `on` isteğe bağlı argümanıyla indeks üzerinde join edilecek sütun ad(lar)ını, how argümanlarıyla da iki nesnenin nasıl birleştirileceğini belirleyebilirsiniz. Varsayılan olarak inner join kullanır. 

pandas ile İki DataFrame Join Etme

.join kullanarak iki veri çerçevesini birleştirelim. Sütun çakışması hatasını önlemek için `lsuffix` ve `rsuffix` sağladık. Join işlemi sütun üzerinde değil indeks üzerinde yapıldığından, ya ‘id’ sütununu değiştirmemiz ya da bir sonek vermemiz gerekir.

df2.join(df3, lsuffix='_left', rsuffix='_right')

  id_left Feature1 Feature2 id_right Feature3
0 1 K L 1 12
1 2 M N 2 13
2 6 O P 3 14
3 7 Q R 4 15
4 8 S T 5 16

`on` argümanını kullanarak da sütunları indeks üzerinde join edebiliriz. Join’in başarılı olması için df3’ün ‘id’ sütununu indekse çevirmeli ve `on` argümanına ‘id’ sütununu vermeliyiz. Varsayılan olarak left join kullanır.   

df2.join(df3.set_index('id'), on='id')

  id Feature1 Feature2 Feature3
0 1 K L 12.0
1 2 M N 13.0
2 6 O P NaN
3 7 Q R 17.0
4 8 S T 15.0

merge fonksiyonunda olduğu gibi, join’in işleyişini `how` argümanını vererek değiştirebiliriz. Bizim durumda inner join kullanacağız. 

df2.join(df3.set_index('id'), on='id', how = "inner")

  id_left Feature1 Feature2 Feature3
0 1 K L 12
1 2 M N 13
3 7 Q R 17
4 8 S T 15

Zaman Serisi Dostu Birleştirme

pandas, zaman serisi DataFrame’lerini birleştirmek için özel fonksiyonlar sağlar. Bunların belki de en kullanışlı ve popüleri merge_asof() fonksiyonudur. merge_asof(), sıralı bir left join’e benzer; ancak eşit anahtarlar yerine en yakın anahtara göre eşleştirir. Sol DataFrame’deki her satır için, sağ DataFrame’deki on anahtarı solun anahtarından küçük olan son satırı seçersiniz. Her iki DataFrame de anahtara göre sıralanmış olmalıdır.

İsteğe bağlı olarak asof merge, grup bazlı bir birleştirme de yapabilir. Bu, on anahtarındaki en yakın eşleşmeye ek olarak by anahtarını eşit şekilde eşleştirir.

Örneğin, elinizde işlemler (trades) ve kotasyonlar (quotes) olabilir ve bunları asof merge ile birleştirmek isteyebilirsiniz. Burada sol DataFrame trades, sağ DataFrame quotes olarak seçilir. time anahtarı üzerinde asof merge yapılır ve sembole (ticker) göre grup bazlı birleştirme uygulanır.

trades = pd.DataFrame({
    'time': pd.to_datetime(['20160525 13:30:00.023',
                            '20160525 13:30:00.038',
                            '20160525 13:30:00.048',
                            '20160525 13:30:00.048',
                            '20160525 13:30:00.048']),
    'ticker': ['MSFT', 'MSFT','GOOG', 'GOOG', 'AAPL'],
    'price': [51.95, 51.95,720.77, 720.92, 98.00],
    'quantity': [75, 155,100, 100, 100]},
    columns=['time', 'ticker', 'price', 'quantity'])

quotes = pd.DataFrame({
    'time': pd.to_datetime(['20160525 13:30:00.023',
                            '20160525 13:30:00.023',
                            '20160525 13:30:00.030',
                            '20160525 13:30:00.041',
                            '20160525 13:30:00.048',
                            '20160525 13:30:00.049',
                            '20160525 13:30:00.072',
                            '20160525 13:30:00.075']),
    'ticker': ['GOOG', 'MSFT', 'MSFT','MSFT', 'GOOG', 'AAPL', 'GOOG','MSFT'],
    'bid': [720.50, 51.95, 51.97, 51.99,720.50, 97.99, 720.50, 52.01],
    'ask': [720.93, 51.96, 51.98, 52.00,720.93, 98.01, 720.88, 52.03]},
    columns=['time', 'ticker', 'bid', 'ask'])
trades
  time ticker price quantity
0 2016-05-25 13:30:00.023 MSFT 51.95 75
1 2016-05-25 13:30:00.038 MSFT 51.95 155
2 2016-05-25 13:30:00.048 GOOG 720.77 100
3 2016-05-25 13:30:00.048 GOOG 720.92 100
4 2016-05-25 13:30:00.048 AAPL 98.00 100
quotes
  time ticker bid ask
0 2016-05-25 13:30:00.023 GOOG 720.50 720.93
1 2016-05-25 13:30:00.023 MSFT 51.95 51.96
2 2016-05-25 13:30:00.030 MSFT 51.97 51.98
3 2016-05-25 13:30:00.041 MSFT 51.99 52.00
4 2016-05-25 13:30:00.048 GOOG 720.50 720.93
5 2016-05-25 13:30:00.049 AAPL 97.99 98.01
6 2016-05-25 13:30:00.072 GOOG 720.50 720.88
7 2016-05-25 13:30:00.075 MSFT 52.01 52.03
df_merge_asof = pd.merge_asof(trades, quotes,
              on='time',
              by='ticker')

df_merge_asof
  time ticker price quantity bid ask
0 2016-05-25 13:30:00.023 MSFT 51.95 75 51.95 51.96
1 2016-05-25 13:30:00.038 MSFT 51.95 155 51.97 51.98
2 2016-05-25 13:30:00.048 GOOG 720.77 100 720.50 720.93
3 2016-05-25 13:30:00.048 GOOG 720.92 100 720.50 720.93
4 2016-05-25 13:30:00.048 AAPL 98.00 100 NaN NaN

Dikkatlice incelerseniz, AAPL satırında NaN görünmesinin nedenini fark edebilirsiniz. Sağdaki quotes DataFrame’inde, AAPL sembolü için 13:30:00.048’den (soldaki tablodaki zaman) daha küçük bir zaman değeri bulunmadığından, bid ve ask sütunlarına NaN’ler yerleştirildi.

Zaman sütunu için önceden tanımlı bir tolerans seviyesi de ayarlayabilirsiniz. Örneğin, yalnızca kotasyon zamanı ile işlem zamanı arasında 2 ms içinde asof merge yapmak istiyorsanız, tolerance argümanını belirtmelisiniz:

df_merge_asof_tolerance = pd.merge_asof(trades, quotes,
              on='time',
              by='ticker',
              tolerance=pd.Timedelta('2ms'))

df_merge_asof_tolerance
  time ticker price quantity bid ask
0 2016-05-25 13:30:00.023 MSFT 51.95 75 51.95 51.96
1 2016-05-25 13:30:00.038 MSFT 51.95 155 NaN NaN
2 2016-05-25 13:30:00.048 GOOG 720.77 100 720.50 720.93
3 2016-05-25 13:30:00.048 GOOG 720.92 100 720.50 720.93
4 2016-05-25 13:30:00.048 AAPL 98.00 100 NaN NaN

Yukarıdaki sonuç ile önceki sonuç arasındaki farka dikkat edin. Zaman toleransı 2 ms’i karşılamıyorsa satırlar birleştirilmez.

Sonuç

Bu eğitimde, pandas kütüphanesinin concat() ve merge() fonksiyonlarını kullanarak farklı mantıklara göre DataFrame’leri nasıl birleştireceğinizi öğrendiniz. Sonlara doğru, zaman serisi DataFrame’lerini birleştirmek için özel merge_asof() fonksiyonunu da pratik ettiniz. Bu süreçte DataFrame indeksleri ile çalışmayı da öğrendiniz. pandas’ta DataFrame’leri birleştirmek için keşfedebileceğiniz daha pek çok seçenek var; harika belgelerine göz atmanızı öneririm. İyi keşifler!

Bu eğitim, yazımında yardımcı olması için şu pandas dokümantasyonundan yararlanmıştır.

pandas hakkında daha fazla bilgi edinmek isterseniz, DataCamp’in Data Manipulation with pandas kursunu alın ve Python Pandas’ta DataFrame’ler eğitimimize göz atın.

DataCamp’in ayrıca şu kullanışlı pandas eğitimleri de vardır:

İyi öğrenmeler!

SSS

pandas’ta merge() ile join() arasındaki fark nedir?

merge() daha esnektir ve SQL join’larına benzer şekilde herhangi bir sütun(lar) üzerinde DataFrame’leri birleştirebilir. join() öncelikle indekslerde join için tasarlanmıştır ve dahili olarak merge()’ü çağıran bir kolaylık yöntemidir. Sütunlar üzerinde join yaparken merge(), join anahtarlarınız zaten indeks olarak ayarlanmışsa join() kullanın.

pandas’ta DataFrame’leri birden çok sütunda nasıl birleştiririm?

on parametresine sütun adlarından oluşan bir liste geçin: pd.merge(df1, df2, on=['col1', 'col2']). Sütun adları DataFrame’ler arasında farklıysa, listelerle birlikte left_on ve right_on kullanın: pd.merge(df1, df2, left_on=['a', 'b'], right_on=['c', 'd']).

DataFrame’leri birleştirirken eksik değerlere ne olur?

Davranış, join türüne bağlıdır. inner join’de eşleşmeyen satırlar dışlanır. left, right veya outer join’lerde eşleşmeyen satırlar korunur ve diğer DataFrame’den gelen sütunlarda NaN değerleriyle doldurulur. Birleştirmeden sonra bunları fillna() veya dropna() ile ele alabilirsiniz.

pandas’ta concat() ile merge()’ü ne zaman kullanmalıyım?

concat(), DataFrame’leri düşeyde (satır ekleme) veya yatayda (sütun ekleme) indeks hizalamasına göre istiflemek için kullanılır. merge(), SQL join’larına benzer şekilde ortak sütun değerlerine göre DataFrame’leri birleştirmeniz gerektiğinde kullanılır. concat()’ı DataFrame’leri "yapıştırmak" gibi, merge()’ü ise ilişkisel join’lar için düşünün.

pandas merge işleminden sonra yinelenen sütun adlarını nasıl ele alırım?

Varsayılan olarak pandas, yinelenen sütun adlarına _x ve _y soneklerini ekler. Bunu suffixes parametresiyle özelleştirin: pd.merge(df1, df2, on='id', suffixes=('_left', '_right')). Birleştirmeden sonra sütunları df.rename(columns={'old': 'new'}) ile yeniden adlandırabilir veya df.drop(columns=['col_y']) ile yinelenenleri kaldırabilirsiniz.

pandas’ta merge() ile join() arasındaki fark nedir?

merge() daha esnektir ve SQL join’larına benzer şekilde herhangi bir sütun(lar) üzerinde DataFrame’leri birleştirebilir. join() öncelikle indekslerde join için tasarlanmıştır ve dahili olarak merge()’ü çağıran bir kolaylık yöntemidir. Sütunlar üzerinde join yaparken merge(), join anahtarlarınız zaten indeks olarak ayarlanmışsa join() kullanın.

pandas’ta DataFrame’leri birden çok sütunda nasıl birleştiririm?

on parametresine sütun adlarından oluşan bir liste geçin: pd.merge(df1, df2, on=['col1', 'col2']). Sütun adları DataFrame’ler arasında farklıysa, listelerle birlikte left_on ve right_on kullanın: pd.merge(df1, df2, left_on=['a', 'b'], right_on=['c', 'd']).

DataFrame’leri birleştirirken eksik değerlere ne olur?

Davranış, join türüne bağlıdır. inner join’de eşleşmeyen satırlar dışlanır. left, right veya outer join’lerde eşleşmeyen satırlar korunur ve diğer DataFrame’den gelen sütunlarda NaN değerleriyle doldurulur. Birleştirmeden sonra bunları fillna() veya dropna() ile ele alabilirsiniz.

pandas’ta concat() ile merge()’ü ne zaman kullanmalıyım?

concat(), DataFrame’leri düşeyde (satır ekleme) veya yatayda (sütun ekleme) indeks hizalamasına göre istiflemek için kullanılır. merge(), SQL join’larına benzer şekilde ortak sütun değerlerine göre DataFrame’leri birleştirmeniz gerektiğinde kullanılır. concat()’ı DataFrame’leri "yapıştırmak" gibi, merge()’ü ise ilişkisel join’lar için düşünün.

pandas merge işleminden sonra yinelenen sütun adlarını nasıl ele alırım?

Varsayılan olarak pandas, yinelenen sütun adlarına _x ve _y soneklerini ekler. Bunu suffixes parametresiyle özelleştirin: pd.merge(df1, df2, on='id', suffixes=('_left', '_right')). Birleştirmeden sonra sütunları df.rename(columns={'old': 'new'}) ile yeniden adlandırabilir veya df.drop(columns=['col_y']) ile yinelenenleri kaldırabilirsiniz.

Konular

Python ve pandas hakkında daha fazlasını öğrenin

Kurs

Elektronik Tablo Kullanıcıları için pandas Join'leri

4 sa
4.4K
Python Pandas kütüphanesini kullanarak tablo formatındaki veri kümelerini etkili ve verimli bir şekilde birleştirmeyi öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow