Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

DataFrame.set_index() / reset_index() în pandas

set_index face dintr-o coloană indexul rândurilor; reset_index mută indexul înapoi într-o coloană sau îl renumerotează.

Sintaxă
df.set_index(keys, *, drop=True, append=False)
df.reset_index(level=None, *, drop=False, names=None)

Ce face DataFrame.set_index() / reset_index()

set_index alege o coloană (sau mai multe) și o folosește ca etichete ale rândurilor. După asta poți căuta rânduri după valoare cu df.loc["Mihai"]. Implicit coloana dispare dintre coloanele obișnuite (drop=True).

reset_index face invers: indexul devine din nou o coloană, iar rândurile primesc numerele 0, 1, 2, …. Cu drop=True indexul vechi este aruncat; e util după o filtrare, când indexul are goluri (0, 2, 5).

Ambele returnează un tabel nou; tabelul inițial rămâne neschimbat. Salvează rezultatul: df = df.set_index("nume").

Parametri

Parametru Descriere
keys La set_index: numele coloanei sau o listă de nume (rezultă un index pe mai multe niveluri, MultiIndex).
drop La set_index: dacă scoate coloana dintre coloane (implicit True). La reset_index: dacă aruncă indexul în loc să-l facă coloană (implicit False).
append La set_index: adaugă coloana la indexul existent în loc să-l înlocuiască.
verify_integrity La set_index: verifica dacă noul index are valori repetate. Este depreciat în pandas 3.1; verifică direct cu rezultat.index.is_unique.
level La reset_index: ce niveluri ale unui MultiIndex se mută în coloane (implicit toate).
names La reset_index: numele noii coloane create din index.

Ce returnează

Un DataFrame nou (sau None cu inplace=True, formă pe care e mai bine să o eviți).

Exemple

Exemplul 1: O coloană devine index

După set_index("nume"), rândul lui Mihai se găsește direct după nume.

import pandas as pd

df = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana"],
    "oraș": ["Iași", "Cluj", "Brașov"],
    "salariu": [5200, 6100, 4800],
})
dupa_nume = df.set_index("nume")
print(dupa_nume)
print(dupa_nume.loc["Mihai"])

Rezultat

         oraș  salariu
nume                  
Ana      Iași     5200
Mihai    Cluj     6100
Ioana  Brașov     4800
oraș       Cluj
salariu    6100
Name: Mihai, dtype: object

Exemplul 2: reset_index după filtrare

Filtrarea păstrează etichetele vechi (1 și 3). reset_index(drop=True) renumerotează rândurile de la 0; fără drop=True, indexul vechi ar deveni o coloană numită index.

import pandas as pd

df = pd.DataFrame({
    "produs": ["pâine", "cafea", "lapte", "ciocolată"],
    "preț": [4.5, 32.0, 7.0, 9.5],
})
scumpe = df[df["preț"] > 8]
print(scumpe)
print(scumpe.reset_index(drop=True))
print(scumpe.reset_index())

Rezultat

      produs  preț
1      cafea  32.0
3  ciocolată   9.5
      produs  preț
0      cafea  32.0
1  ciocolată   9.5
   index     produs  preț
0      1      cafea  32.0
1      3  ciocolată   9.5

Exemplul 3: Index pe două coloane și valori repetate

Cu o listă de coloane rezultă un MultiIndex. Un index poate avea valori repetate (Iași apare de două ori); index.is_unique îți spune dacă fiecare etichetă apare o singură dată.

import pandas as pd

df = pd.DataFrame({
    "oraș": ["Iași", "Iași", "Cluj", "Cluj"],
    "lună": ["ian", "feb", "ian", "feb"],
    "vânzări": [1200, 1350, 1500, 1420],
})
pe_luni = df.set_index(["oraș", "lună"])
print(pe_luni)
print(pe_luni.loc[("Cluj", "feb"), "vânzări"])

dupa_oras = df.set_index("oraș")
print(dupa_oras.index.is_unique)
print(pe_luni.index.is_unique)

Rezultat

           vânzări
oraș lună         
Iași ian      1200
     feb      1350
Cluj ian      1500
     feb      1420
1420
False
True

Greșeli frecvente

  • Apelezi df.set_index("nume") și te aștepți ca df să se schimbe. Metoda returnează un tabel nou; scrie df = df.set_index("nume").
  • Cauți apoi coloana df["nume"] și primești KeyError: după set_index, nume nu mai e coloană, ci index. Folosește df.index sau drop=False.
  • Uiți drop=True la reset_index și tabelul capătă o coloană în plus numită index.

Comenzi înrudite

  • pd.DataFrame(): Creează un tabel cu rânduri și coloane, dintr-un dicționar de liste, dintr-o listă de dicționare sau dintr-o listă de liste.
  • DataFrame.loc: Selectează rânduri și coloane după etichete (numele din index și numele coloanelor) și permite modificarea valorilor.
  • DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.
  • DataFrame.sort_values() și sort_index(): Ordonează rândurile după valorile uneia sau mai multor coloane (sort_values) sau după etichetele din index (sort_index).
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: DataFrame.set_index() / reset_index()

Ai o nelămurire despre utilizarea comenzii DataFrame.set_index() / reset_index() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.