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.
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:
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 95000Mari kita telaah kode di atas:
- Baris 9: index dibangun lewat pd.Index([…], name=“kode”) sehingga index memiliki nama kode; nama ini nantinya menjadi nama kolom hasil reset.
- Baris 12: boolean mask inventori[“stok”] >= 20 menyaring tiga baris; output pertama memperlihatkan index yang tidak berurutan.
- Baris 15: cukup.reset_index() memindahkan label kode menjadi kolom baru bernama kode dan memberi nomor baru 0, 1, 2 kepada baris.
- Baris 18: cukup.reset_index(drop=True) membuang label lama sehingga kolom kode tidak muncul.
- Konsekuensi: kedua varian mengembalikan DataFrame baru; tabel cukup tidak pernah berubah.
Parameter Penting dan Nama Kolom Hasil #
Dua bentuk pemanggilan yang paling sering dipakai:
| Pemanggilan | Hasil |
|---|---|
| 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().