Setelah baris diurutkan dengan sort_index() atau disaring dengan boolean mask, label index yang tersisa sering tidak berurutan lagi. Pada tabel hasil filter, misalnya, kita bisa mendapatkan label P-103, P-102, dan P-104 tanpa P-101 dan P-105. Kondisi ini normal, tetapi merepotkan ketika kita ingin menomori baris kembali dari nol. Method reset_index() menyelesaikannya: baris diberi nomor baru 0, 1, 2, dan seterusnya, sementara label lama dipindahkan menjadi kolom biasa.

Index yang Bolong Setelah Filter #

Filter baris membuat index mewarisi label dari tabel asal. Pada contoh berikut kita mengambil produk dengan stok minimal 20 dari tabel inventori yang indexnya bernama kode; hasilnya hanya tiga baris dengan label P-103, P-102, dan P-104. Label P-101 dan P-105 tidak ikut karena stoknya di bawah ambang. Akibatnya posisi baris dan labelnya tidak lagi sejalan: baris berlabel P-102 berada di posisi kedua, bukan di posisi yang cocok dengan angkanya.

Menomori Ulang Baris dengan reset_index() #

Script berikut menyaring inventori, lalu merapikan indexnya dengan dua varian reset_index(): satu menyimpan label lama sebagai kolom, satu membuangnya.

python
import pandas as pd

inventori = pd.DataFrame(
    {
        "produk": ["Kopi Gayo", "Teh Melati", "Gula Aren", "Sirup Jahe", "Madu Sumatera"],
        "stok": [42, 15, 42, 8, 27],
        "harga": [85000, 32000, 88000, 21000, 95000],
    },
    index=pd.Index(["P-103", "P-101", "P-102", "P-105", "P-104"], name="kode"),
)

cukup = inventori[inventori["stok"] >= 20]
print(cukup)
print()
rapikan = cukup.reset_index()
print(rapikan)
print()
rapikan_tanpa_kode = cukup.reset_index(drop=True)
print(rapikan_tanpa_kode)

Output yang Dihasilkan:

text
              produk  stok  harga
kode                             
P-103      Kopi Gayo    42  85000
P-102      Gula Aren    42  88000
P-104  Madu Sumatera    27  95000

    kode         produk  stok  harga
0  P-103      Kopi Gayo    42  85000
1  P-102      Gula Aren    42  88000
2  P-104  Madu Sumatera    27  95000

          produk  stok  harga
0      Kopi Gayo    42  85000
1      Gula Aren    42  88000
2  Madu Sumatera    27  95000

Mari kita telaah kode di atas:

  1. Baris 9: index dibangun lewat pd.Index([…], name=“kode”) sehingga index memiliki nama kode; nama ini nantinya menjadi nama kolom hasil reset.
  2. Baris 12: boolean mask inventori[“stok”] >= 20 menyaring tiga baris; output pertama memperlihatkan index yang tidak berurutan.
  3. Baris 15: cukup.reset_index() memindahkan label kode menjadi kolom baru bernama kode dan memberi nomor baru 0, 1, 2 kepada baris.
  4. Baris 18: cukup.reset_index(drop=True) membuang label lama sehingga kolom kode tidak muncul.
  5. Konsekuensi: kedua varian mengembalikan DataFrame baru; tabel cukup tidak pernah berubah.

Parameter Penting dan Nama Kolom Hasil #

Dua bentuk pemanggilan yang paling sering dipakai:

PemanggilanHasil
reset_index()label lama menjadi kolom; index baru 0 sampai n-1
reset_index(drop=True)label lama dibuang; index baru 0 sampai n-1

Nama kolom hasil mengikuti nama index. Bila index bernama kode, kolom baru dinamai kode; bila index tidak bernama, pandas memakai nama “index” secara default. Untuk memperbarui variabel lama, gunakan pola assignment seperti cukup = cukup.reset_index(drop=True) agar tabel lama digantikan oleh tabel yang sudah rapi.

Index yang sudah berurutan dari nol membuat posisi (iloc) dan label (loc) menunjuk baris yang sama, sehingga kode berikutnya lebih mudah diprediksi. Tabel yang rapi index-nya siap masuk tahap pemrosesan lanjutan. Persoalan yang sering menyusul adalah tipe kolom yang tidak sesuai isinya, misalnya angka yang tersimpan sebagai teks; itulah topik Chapter berikutnya tentang astype().