merge() di Pandas

Menggabungkan dua tabel berdasarkan kolom kunci, setara JOIN di SQL atau XLOOKUP di Excel.

Diperbarui · Tim Zennit.id

Penjelasan sederhana

Kamu punya dua tabel: daftar karyawan dengan kode departemen, dan daftar departemen dengan namanya. merge() mencocokkan kode itu dan menempelkan nama departemen ke tabel karyawan, seperti XLOOKUP untuk seluruh kolom.

Sintaks

pd.merge(kiri, kanan, on=None, left_on=None, right_on=None, how='inner')
BagianKeterangan
onNama kolom kunci kalau namanya sama di kedua tabel.
left_on / right_onKolom kunci kalau namanya berbeda.
how'inner' hanya yang cocok, 'left' semua baris kiri, 'right' semua baris kanan, 'outer' semuanya.

df adalah nama DataFrame (tabel) yang sedang diolah. Contoh di bawah memakai import pandas as pd dan import numpy as np, yang sudah disiapkan otomatis.

Contoh merge()

Data contoh: karyawan, departemen (sudah tersedia sebagai DataFrame)

DataFrame karyawan

idnamadept_idkotagajitgl_masukatasan_id
1 Andi Pratama 3 Bandung 12500000 2019-03-11 NaN
2 Bunga Lestari 1 Jakarta 9800000 2020-07-01 NaN
3 Candra Wijaya 3 Bandung 8200000 2021-02-15 1
4 Dewi Anggraini 2 Jakarta 7500000 2022-05-09 6
5 Eko Saputra 1 Jakarta 6900000 2023-01-16 2
6 Fajar Nugroho 2 Surabaya 11000000 2018-09-03 NaN
7 Gita Permata 3 Jakarta 8200000 2023-08-21 1
8 Hendra Gunawan NaN Medan 5500000 2024-04-02 NaN

DataFrame departemen

idnama_deptlokasi
1 Keuangan Jakarta
2 Marketing Jakarta
3 IT Bandung
4 Legal Surabaya
merge.py
pd.merge(
    karyawan[['nama', 'dept_id']],
    departemen,
    left_on='dept_id', right_on='id', how='left',
)[['nama', 'nama_dept', 'lokasi']]

Hasil 8 baris × 3 kolom

namanama_deptlokasi
Andi Pratama IT Bandung
Bunga Lestari Keuangan Jakarta
Candra Wijaya IT Bandung
Dewi Anggraini Marketing Jakarta
Eko Saputra Keuangan Jakarta
Fajar Nugroho Marketing Jakarta
Gita Permata IT Bandung
Hendra Gunawan NaN NaN

Setiap karyawan mendapat nama dan lokasi departemennya. Hendra tetap muncul dengan NaN karena memakai how='left' dan ia belum punya departemen.

Cara kerjanya, langkah demi langkah

  1. Kolom dept_id di tabel karyawan dicocokkan dengan id di tabel departemen.
  2. how='left' menjaga semua karyawan tetap ada, termasuk yang tidak punya pasangan.
  3. Tiga kolom dipilih dari hasil gabungan.

Dipakai untuk apa di kantor?

  • Menempelkan nama produk ke tabel transaksi, atau data pelanggan ke tabel pesanan.
  • Mencari data yang tidak punya pasangan di tabel lain.

Kesalahan yang sering terjadi

  • Memakai how='inner' (bawaan) tanpa sadar, sehingga baris tanpa pasangan hilang.
  • Kunci di salah satu tabel dobel, sehingga jumlah baris hasil membengkak.
Progres bab Menggabungkan Tabel 0/2 dipelajari
Lanjut: concat()

Langkah berikutnya

Dari paham fungsi, ke siap kerja.

Belajar Python bareng mentor

Tahu fungsinya itu awal. Mengolah data kantor sampai jadi insight, itu skill.

Private Class Python & SQL untuk Data: dari Pandas dasar sampai membersihkan, merekap, dan memvisualisasikan data studi kasus kerja, dengan jadwal yang menyesuaikan kamu.

Lihat Private Class