Lewati ke konten utama

Menggabungkan DataFrame di pandas: merge(), concat() & join()

Pelajari cara men-join dan merge DataFrame di pandas menggunakan concat(), merge(), dan join() dengan contoh praktis.
Diperbarui 5 Jun 2026  · 13 mnt baca

Pernah mencoba menyelesaikan tantangan di Kaggle? Jika ya, Anda mungkin memperhatikan bahwa pada sebagian besar tantangan, data yang diberikan tersedia dalam beberapa file, dengan beberapa kolom muncul di lebih dari satu file. Lalu, apa hal pertama yang terlintas di benak Anda? Tentu saja, gabungkan semuanya!

Dalam tutorial ini, Anda akan mempraktikkan beberapa teknik join standar di pandas. Secara khusus, Anda akan belajar untuk:

  • Menggabungkan (concatenate) DataFrame sepanjang baris dan kolom.
  • Menggabungkan (merge) DataFrame pada key tertentu dengan berbagai logika join seperti left-join, inner-join, dan lain-lain.
  • Melakukan join DataFrame berdasarkan indeks.
  • Melakukan penggabungan yang ramah time series yang disediakan di pandas

Sepanjang proses, Anda juga akan mempelajari beberapa trik yang diperlukan sebelum dan sesudah melakukan join.

Ringkasnya

  • Gunakan pd.concat() untuk menumpuk DataFrame secara vertikal (baris) atau horizontal (kolom)
  • Gunakan pd.merge() untuk menggabungkan DataFrame pada kolom yang sama, mirip dengan join di SQL
  • Tentukan jenis join dengan parameter how: 'inner', 'outer', 'left', atau 'right'
  • Gunakan .join() untuk join DataFrame berbasis indeks
  • Gunakan pd.merge_asof() untuk data time series saat Anda memerlukan pencocokan key terdekat

Join di pandas

Menggabungkan dan melakukan merge DataFrame adalah proses inti untuk memulai analisis data dan tugas machine learning. Ini adalah salah satu perangkat yang harus dikuasai setiap Analis Data atau Data Scientist karena, hampir selalu, data berasal dari berbagai sumber dan file. Anda mungkin perlu menyatukan semua data di satu tempat dengan logika join tertentu lalu memulai analisis. Mereka yang bekerja dengan SQL join pasti memahami pentingnya tugas ini. Bahkan jika Anda ingin membangun model machine learning pada suatu data, Anda mungkin perlu menggabungkan beberapa file CSV menjadi satu DataFrame.

Untungnya, Anda memiliki pustaka paling populer di Python, pandas, yang siap membantu! pandas menyediakan berbagai fasilitas untuk dengan mudah menggabungkan Series dan DataFrame dengan beragam logika himpunan untuk indeks serta fungsionalitas aljabar relasional pada operasi join/merge.

Jalankan dan edit kode dari tutorial ini secara online.

Jalankan kode

Konkatenasi (Concatenate) di pandas

Mulailah dengan mengimpor pustaka yang akan Anda gunakan sepanjang tutorial: pandas

import pandas as pd

Anda akan melakukan semua operasi dalam tutorial ini pada DataFrame dummy yang Anda buat. Untuk membuat DataFrame, Anda dapat menggunakan dictionary Python seperti:

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

Di sini, key pada dictionary dummy_data1 adalah nama kolom, dan nilai dalam daftar merupakan data yang sesuai untuk setiap observasi atau baris. Untuk mengubahnya menjadi DataFrame pandas, Anda akan menggunakan fungsi DataFrame() dari pandas, beserta argumen columns untuk menamai kolom Anda:

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

Seperti yang Anda lihat, sekarang Anda memiliki DataFrame dengan tiga kolom id, Feature1, dan Feature2. Ada satu kolom tambahan tanpa nama yang secara intrinsik dibuat pandas sebagai label baris. Serupa dengan DataFrame sebelumnya df1, Anda akan membuat dua DataFrame lagi yaitu df2 dan df3:

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()

Untuk sekadar menggabungkan DataFrame sepanjang baris, Anda dapat menggunakan fungsi concat() di pandas. Anda harus meneruskan nama-nama DataFrame dalam sebuah daftar sebagai argumen ke fungsi concat():

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

Anda dapat melihat bahwa dua DataFrame df1 dan df2 kini telah digabungkan menjadi satu DataFrame df_row sepanjang baris. Namun, label baris tampak salah. Jika Anda ingin label baris menyesuaikan secara otomatis sesuai hasil join, Anda harus mengatur argumen ignore_index sebagai True saat memanggil fungsi concat():

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

Sekarang label baris sudah benar!

pandas juga memberi Anda opsi untuk memberi label pada DataFrame setelah konkatenasi dengan sebuah key sehingga Anda tahu data mana berasal dari DataFrame yang mana. Anda dapat melakukannya dengan meneruskan argumen tambahan keys yang menentukan nama label DataFrame dalam sebuah daftar. Di sini Anda akan melakukan konkatenasi yang sama dengan key x dan y masing-masing untuk DataFrame df1 dan df2.

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

Mencantumkan key juga memudahkan pengambilan data yang sesuai dengan DataFrame tertentu. Anda dapat mengambil data dari DataFrame df2 yang berlabel y menggunakan metode loc:

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

Anda juga dapat meneruskan dictionary ke concat(); dalam hal ini, key dictionary akan digunakan sebagai argumen keys (kecuali Anda menentukan keys lain):

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

Perlu dicatat bahwa concat() membuat salinan penuh data, dan penggunaan fungsi ini berulang-ulang dapat menimbulkan penurunan performa yang signifikan. Untuk operasi data skala besar, pertimbangkan mengeksplor pandas 2.0 vs polars untuk manipulasi data berkinerja tinggi. Jika Anda perlu menggunakan operasi ini pada beberapa dataset, gunakan list comprehension.

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

Untuk menggabungkan DataFrame sepanjang kolom, Anda dapat menentukan parameter axis sebagai 1:

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

Merge DataFrame di pandas

Operasi lain yang sangat umum terkait DataFrame adalah merge. Dua DataFrame bisa menyimpan jenis informasi berbeda tentang entitas yang sama dan dihubungkan oleh fitur/kolom yang sama. Untuk menggabungkan DataFrame tersebut, pandas menyediakan beberapa fungsi seperti concat(), merge(), join(), dan lain-lain. Pada bagian ini, Anda akan berlatih menggunakan fungsi merge() dari pandas.

Anda dapat menggabungkan DataFrame df_row (yang Anda buat dengan menggabungkan df1 dan df2 sepanjang baris) dan df3 pada kolom (atau key) umum id. Untuk melakukannya, teruskan nama DataFrame dan argumen tambahan on sebagai nama kolom umum, di sini id, ke fungsi merge():

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

Anda dapat melihat bahwa DataFrame kini digabungkan menjadi satu DataFrame berdasarkan nilai umum yang ada di kolom id pada kedua DataFrame. Sebagai contoh, di sini nilai id 1 muncul bersama A, B dan K, L di DataFrame df_row sehingga id ini muncul dua kali di DataFrame akhir df_merge_col dengan nilai 12 pada Feature3 yang berasal dari DataFrame df3.

Mungkin saja kolom yang ingin Anda gunakan untuk merge memiliki nama berbeda (tidak seperti pada kasus ini). Untuk merge seperti itu, Anda harus menentukan argumen left_on sebagai nama kolom pada DataFrame kiri dan right_on sebagai nama kolom pada DataFrame kanan, seperti:

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

Anda juga dapat menambahkan baris ke DataFrame menggunakan pd.concat(). Pertama, buat DataFrame baru dengan data baris tersebut, lalu konkatenasikan dengan DataFrame asli:

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

Jenis-jenis Join di pandas

Pada bagian ini, Anda akan mempraktikkan berbagai logika join yang tersedia untuk menggabungkan DataFrame pandas berdasarkan kolom/key umum. Logika di balik join ini sama seperti di SQL saat Anda melakukan join antar tabel. Jika Anda familier dengan inner vs outer join di SQL, konsep-konsep ini akan terasa akrab.

Jenis Join Padanan SQL Hasil Kasus Penggunaan
inner INNER JOIN Hanya baris yang cocok dari kedua DataFrame Ketika Anda hanya menginginkan rekaman yang ada di kedua tabel
left LEFT OUTER JOIN Semua baris dari kiri + yang cocok dari kanan Pertahankan semua rekaman dari DataFrame utama
right RIGHT OUTER JOIN Semua baris dari kanan + yang cocok dari kiri Pertahankan semua rekaman dari DataFrame sekunder
outer FULL OUTER JOIN Semua baris dari kedua DataFrame Ketika Anda memerlukan union lengkap dari kedua tabel

Full Outer Join

FULL OUTER JOIN menggabungkan hasil dari left dan right outer join. DataFrame hasil gabungan akan berisi semua rekaman dari kedua DataFrame dan mengisi nilai NaN untuk kecocokan yang hilang di salah satu sisi. Anda dapat melakukan full outer join dengan menentukan argumen how sebagai outer pada fungsi merge():

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

Anda dapat melihat bahwa DataFrame hasil berisi semua entri dari kedua tabel dengan nilai NaN untuk kecocokan yang hilang di salah satu sisi. Namun, satu hal lagi yang perlu diperhatikan adalah sufiks yang ditambahkan ke nama kolom untuk menunjukkan kolom berasal dari DataFrame yang mana. Sufiks default adalah x dan y, tetapi Anda dapat mengubahnya dengan menentukan argumen suffixes pada fungsi merge():

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 hanya menghasilkan kumpulan rekaman yang cocok di kedua DataFrame A dan DataFrame B. Anda harus meneruskan inner pada argumen how di fungsi merge() untuk melakukan inner join:

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 menghasilkan kumpulan rekaman lengkap dari DataFrame B (DataFrame kanan), dengan rekaman yang cocok (bila ada) di DataFrame A (DataFrame kiri). Jika tidak ada kecocokan, sisi kanan akan berisi nilai null. Anda harus meneruskan right pada argumen how di fungsi merge() untuk melakukan right join:

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 menghasilkan kumpulan rekaman lengkap dari DataFrame A (DataFrame kiri), dengan rekaman yang cocok (bila ada) di DataFrame B (DataFrame kanan). Jika tidak ada kecocokan, sisi kiri akan berisi nilai null. Anda harus meneruskan left pada argumen how di fungsi merge() untuk melakukan left join:

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

Join berdasarkan indeks

Terkadang Anda perlu melakukan join pada indeks atau label baris. Untuk melakukannya, Anda harus menentukan right_index (untuk indeks DataFrame kanan) dan left_index (untuk indeks DataFrame kiri) sebagai True:

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

Metode pandas DataFrame.join() digunakan untuk melakukan join DataFrame pada indeks yang unik. Anda dapat menggunakan argumen opsional `on` untuk men-join nama kolom pada indeks dan argumen how untuk menentukan operasi kedua objek. Secara default, metode ini menggunakan inner join. 

pandas Join Dua DataFrame

Mari kita join dua data frame menggunakan .join. Kita memberikan `lsuffix` dan `rsuffix` untuk menghindari error tumpang tindih kolom. Metode ini melakukan join berdasarkan indeks, bukan kolom, sehingga kita perlu mengubah kolom ‘id’ atau menyediakan sufiks.

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

Kita juga dapat men-join kolom pada indeks menggunakan argumen `on`. Agar join berhasil, kita harus mengubah kolom df3 ‘id’ menjadi indeks dan memberikan argumen `on` dengan kolom ‘id’. Secara default, metode ini akan menggunakan left join.   

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

Sama seperti fungsi merge, kita dapat mengubah jenis operasi join dengan memberikan argumen `how`. Dalam kasus kita, kita akan menggunakan inner join. 

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

Penggabungan yang Ramah Time Series

pandas menyediakan fungsi khusus untuk menggabungkan DataFrame time series. Mungkin yang paling berguna dan populer adalah fungsi merge_asof(). Fungsi merge_asof() mirip dengan ordered left-join, kecuali Anda mencocokkan key terdekat alih-alih key yang sama persis. Untuk setiap baris di DataFrame kiri, Anda memilih baris terakhir di DataFrame kanan di mana key on lebih kecil daripada key di sisi kiri. Kedua DataFrame harus diurutkan berdasarkan key tersebut.

Opsional, asof merge dapat melakukan merge per grup. Ini mencocokkan key by secara sama, selain kecocokan terdekat pada key on.

Misalnya, Anda mungkin memiliki trades dan quotes, dan Anda ingin melakukan asof merge atas keduanya. Di sini DataFrame kiri dipilih sebagai trades dan DataFrame kanan sebagai quotes. Keduanya di-asof merge pada key time dan di-merge per grup berdasarkan simbol ticker-nya.

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

Jika Anda perhatikan, Anda dapat melihat alasan munculnya NaN pada baris ticker AAPL. Karena DataFrame kanan quotes tidak memiliki nilai time yang lebih kecil dari 13:30:00.048 (waktu pada tabel kiri) untuk ticker AAPL, maka NaN dimasukkan ke kolom bid dan ask.

Anda juga dapat menetapkan tingkat toleransi yang telah ditentukan untuk kolom waktu. Misalnya Anda hanya ingin melakukan asof merge dalam rentang 2 ms antara waktu quote dan waktu trade, maka Anda harus menentukan argumen tolerance:

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

Perhatikan perbedaan antara hasil di atas dan sebelumnya. Baris tidak digabungkan jika toleransi waktu tidak memenuhi 2 ms.

Kesimpulan

Pada tutorial ini, Anda mempelajari cara melakukan konkatenasi dan merge DataFrame berdasarkan beberapa logika menggunakan fungsi concat() dan merge() dari pustaka pandas. Di bagian akhir, Anda juga mempraktikkan fungsi khusus merge_asof() untuk menggabungkan DataFrame Time series. Sepanjang proses, Anda juga belajar bekerja dengan indeks DataFrame. Masih banyak opsi lain yang bisa Anda jelajahi untuk melakukan join DataFrame di pandas, dan saya mendorong Anda untuk melihat dokumentasinya yang luar biasa. Selamat menjelajah!

Tutorial ini menggunakan dokumentasi pandas ini sebagai referensi penulisan.

Jika Anda ingin mempelajari lebih lanjut tentang pandas, ikuti kursus Data Manipulation with pandas di DataCamp dan lihat Tutorial DataFrame di Python Pandas kami.

DataCamp juga memiliki beberapa tutorial pandas praktis lainnya, termasuk:

Selamat belajar!

FAQs

Apa perbedaan antara merge() dan join() di pandas?

merge() lebih fleksibel dan dapat men-join DataFrame pada kolom apa pun, mirip dengan join di SQL. join() terutama dirancang untuk join pada indeks dan merupakan metode praktis yang memanggil merge() secara internal. Gunakan merge() saat men-join berdasarkan kolom, dan join() saat key join Anda sudah disetel sebagai indeks.

Bagaimana cara menggabungkan DataFrame pada beberapa kolom di pandas?

Teruskan daftar nama kolom ke parameter on: pd.merge(df1, df2, on=['col1', 'col2']). Jika nama kolom berbeda antar DataFrame, gunakan left_on dan right_on dengan daftar: pd.merge(df1, df2, left_on=['a', 'b'], right_on=['c', 'd']).

Apa yang terjadi pada nilai yang hilang saat menggabungkan DataFrame?

Perilakunya bergantung pada jenis join. Dengan join inner, baris tanpa kecocokan akan dikecualikan. Dengan join left, right, atau outer, baris yang tidak cocok tetap dipertahankan dan diisi dengan nilai NaN pada kolom dari DataFrame lainnya. Anda dapat menanganinya menggunakan fillna() atau dropna() setelah merge.

Kapan saya harus menggunakan concat() vs merge() di pandas?

Gunakan concat() untuk menumpuk DataFrame secara vertikal (menambah baris) atau horizontal (menambah kolom) berdasarkan perataan indeks. Gunakan merge() saat Anda perlu menggabungkan DataFrame berdasarkan nilai kolom yang sama, mirip dengan join relasional di SQL. Anggap concat() sebagai "merekatkan" DataFrame, sementara merge() untuk join relasional.

Bagaimana cara menangani nama kolom duplikat setelah merge di pandas?

Secara default, pandas menambahkan sufiks _x dan _y pada nama kolom yang duplikat. Kustomisasi dengan parameter suffixes: pd.merge(df1, df2, on='id', suffixes=('_left', '_right')). Setelah merge, Anda dapat mengganti nama kolom menggunakan df.rename(columns={'old': 'new'}) atau menghapus duplikat dengan df.drop(columns=['col_y']).

Apa perbedaan antara merge() dan join() di pandas?

merge() lebih fleksibel dan dapat men-join DataFrame pada kolom apa pun, mirip dengan join di SQL. join() terutama dirancang untuk join pada indeks dan merupakan metode praktis yang memanggil merge() secara internal. Gunakan merge() saat men-join berdasarkan kolom, dan join() saat key join Anda sudah disetel sebagai indeks.

Bagaimana cara menggabungkan DataFrame pada beberapa kolom di pandas?

Teruskan daftar nama kolom ke parameter on: pd.merge(df1, df2, on=['col1', 'col2']). Jika nama kolom berbeda antar DataFrame, gunakan left_on dan right_on dengan daftar: pd.merge(df1, df2, left_on=['a', 'b'], right_on=['c', 'd']).

Apa yang terjadi pada nilai yang hilang saat menggabungkan DataFrame?

Perilakunya bergantung pada jenis join. Dengan join inner, baris tanpa kecocokan akan dikecualikan. Dengan join left, right, atau outer, baris yang tidak cocok tetap dipertahankan dan diisi dengan nilai NaN pada kolom dari DataFrame lainnya. Anda dapat menanganinya menggunakan fillna() atau dropna() setelah merge.

Kapan saya harus menggunakan concat() vs merge() di pandas?

Gunakan concat() untuk menumpuk DataFrame secara vertikal (menambah baris) atau horizontal (menambah kolom) berdasarkan perataan indeks. Gunakan merge() saat Anda perlu menggabungkan DataFrame berdasarkan nilai kolom yang sama, mirip dengan join relasional di SQL. Anggap concat() sebagai "merekatkan" DataFrame, sementara merge() untuk join relasional.

Bagaimana cara menangani nama kolom duplikat setelah merge di pandas?

Secara default, pandas menambahkan sufiks _x dan _y pada nama kolom yang duplikat. Kustomisasi dengan parameter suffixes: pd.merge(df1, df2, on='id', suffixes=('_left', '_right')). Setelah merge, Anda dapat mengganti nama kolom menggunakan df.rename(columns={'old': 'new'}) atau menghapus duplikat dengan df.drop(columns=['col_y']).

Topik

Pelajari lebih lanjut tentang Python dan pandas

Kursus

Menggabungkan Data dengan Pandas untuk Pengguna Spreadsheet

4 Hr
4.5K
Pelajari cara menggabungkan dataset dalam format tabel secara efektif dan efisien menggunakan perpustakaan Python Pandas.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak