Penjelasan sederhana
Kalau aturannya terlalu rumit untuk satu rumus, tulis aturannya sebagai fungsi, lalu apply() akan menjalankannya ke setiap baris. Mirip IF bertingkat di Excel, tapi lebih mudah dibaca.
Sintaks
df['kolom'].apply(fungsi)
df.apply(fungsi, axis=1)
| Bagian | Keterangan |
|---|---|
fungsi | Fungsi Python atau lambda yang menerima satu nilai (atau satu baris kalau axis=1). |
axis=1 | Menjalankan fungsi per baris, bisa membaca beberapa kolom sekaligus. |
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 apply()
Data contoh: karyawan (sudah tersedia sebagai DataFrame)
DataFrame karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_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 |
def golongan(gaji):
if gaji >= 10000000:
return 'Senior'
if gaji >= 8000000:
return 'Madya'
return 'Junior'
karyawan['golongan'] = karyawan['gaji'].apply(golongan)
karyawan[['nama', 'gaji', 'golongan']]
Hasil 8 baris × 3 kolom
| nama | gaji | golongan |
|---|---|---|
| Andi Pratama | 12500000 | Senior |
| Bunga Lestari | 9800000 | Madya |
| Candra Wijaya | 8200000 | Madya |
| Dewi Anggraini | 7500000 | Junior |
| Eko Saputra | 6900000 | Junior |
| Fajar Nugroho | 11000000 | Senior |
| Gita Permata | 8200000 | Madya |
| Hendra Gunawan | 5500000 | Junior |
Setiap gaji diberi golongan sesuai aturan di fungsi: 10 juta ke atas Senior, 8 juta ke atas Madya, sisanya Junior.
Cara kerjanya, langkah demi langkah
- Fungsi
golonganmenerima satu angka gaji dan mengembalikan teks. apply(golongan)menjalankan fungsi itu ke setiap nilai kolom gaji.- Hasilnya disimpan ke kolom baru
golongan.
Dipakai untuk apa di kantor?
- Klasifikasi dengan aturan bertingkat.
- Membersihkan teks dengan logika khusus.
Kesalahan yang sering terjadi
- Lupa
axis=1saat fungsinya membaca beberapa kolom dari satu baris. - Fungsi tidak mengembalikan nilai (lupa
return), sehingga hasilnya None.
.str