Kolom sudah bisa kita pilih dengan bebas, tetapi pertanyaan analisis sering menunjuk ke baris tertentu: bagaimana data lengkap karyawan ber-NIP E002, atau baris-baris dari E002 sampai E004? Pandas menjawab kebutuhan itu dengan property .loc, yang membaca baris berdasarkan label index. Karena data karyawan kita memakai nomor induk sebagai label, seleksi dengan .loc terasa seperti mencari dokumen lewat nomor dokumennya. Chapter ini mempraktikkan seleksi satu label, rentang label, serta list label beserta perilaku errornya.

Akses Satu Baris Lewat Label #

Property .loc ditulis setelah nama DataFrame, lalu diikuti kurung siku yang berisi label index yang diinginkan. Pandas mengembalikan seluruh nilai baris pada label tersebut. Kita ambil baris E002 dan satu rentang label dari data karyawan yang sudah kita kenal.

python
import pandas as pd

karyawan = pd.DataFrame(
    {
        "nama": ["Budi", "Siti", "Dewi", "Andi", "Rina"],
        "kota": ["Bandung", "Jakarta", "Surabaya", "Bandung", "Medan"],
        "umur": [29, 34, 25, 31, 27],
        "gaji": [8500000, 10500000, 7200000, 9800000, 8000000],
    },
    index=["E001", "E002", "E003", "E004", "E005"],
)

baris_siti = karyawan.loc["E002"]
print(baris_siti)
print()

rentang = karyawan.loc["E002":"E004"]
print(rentang)

Output yang Dihasilkan:

text
nama        Siti
kota     Jakarta
umur          34
gaji    10500000
Name: E002, dtype: object

      nama      kota  umur      gaji
E002  Siti   Jakarta    34  10500000
E003  Dewi  Surabaya    25   7200000
E004  Andi   Bandung    31   9800000

Mari kita telaah peran setiap bagian kode di atas:

  1. Baris 3-11 (karyawan = pd.DataFrame(...)): dataset lima karyawan dengan label index E001 sampai E005 yang diberikan lewat argumen index.
  2. Baris 13 (baris_siti = karyawan.loc["E002"]): .loc mencari label "E002" pada index dan mengembalikan seluruh baris tersebut.
  3. Baris 14-15: print(baris_siti) menampilkan baris yang sudah dipilih.
  4. Baris 17-18: rentang "E002":"E004" memilih beberapa baris sekaligus dengan batas label awal dan akhir.

Baris Tunggal Berubah Menjadi Series #

Output pertama memperlihatkan perilaku penting: satu baris DataFrame dikembalikan sebagai Series. Index pada Series tersebut berisi nama-nama kolom (nama, kota, umur, gaji), sehingga tampilan tabelnya efektif dibalik, dan baris Name: E002 menyimpan label baris asal. Dtype-nya object karena baris ini memuat campuran string dan angka; pandas memakai object untuk Series campuran semacam ini. Pola Name: ... yang sama juga kita temui pada seleksi kolom di Chapter Memilih Satu Kolom, sehingga asal sebuah Series selalu dapat dilacak.

Rentang Label Bersifat Inklusif #

Output kedua menunjukkan cara kerja slicing pada .loc: rentang "E002":"E004" mengembalikan tiga baris, yaitu E002, E003, dan E004. Label pada batas akhir ikut disertakan, berbeda dengan slice list Python yang mengabaikan batas akhirnya. Sifat inklusif ini masuk akal untuk index berlabel karena pandas tidak mengasumsikan label berurutan berjarak satu per satu. Pada index berisi tanggal, misalnya, rentang "2026-01-01":"2026-01-07" dimaknai lengkap sampai tanggal tujuh.

List Label dan Label yang Tidak Dikenal #

Selain satu label dan rentang, .loc juga menerima list label: karyawan.loc[["E002", "E004"]] mengembalikan dua baris tersebut dengan urutan sesuai list. Bila label tidak ditemukan, pandas menghentikan eksekusi dengan KeyError; menulis karyawan.loc["E999"] menghasilkan KeyError: 'E999', demikian pula karyawan.loc["E002", "alamat"] menghasilkan KeyError: 'alamat' karena kolom tersebut tidak ada. Pesan KeyError yang menyebut label atau kolomnya persis membuat kesalahan ejaan cepat ditemukan. Detail kecil ini juga terdokumentasi pada halaman pandas.DataFrame.loc dan panduan Indexing and selecting data .

Sekarang kita memiliki dua cara seleksi baris: .loc yang bekerja dengan label, dan kurung siku pada Chapter-Chapter sebelumnya yang bekerja dengan nama kolom. Masih ada satu basis seleksi yang belum dibahas: posisi integer, yaitu urutan fisik baris di dalam tabel. Property .iloc pada Chapter berikutnya menuntaskan basis seleksi tersebut.