DataFrame.drop() în pandas

Elimină coloane (columns=) sau rânduri (index=) după nume și returnează un tabel nou.

Sintaxă
df.drop(labels=None, *, axis=0, index=None, columns=None, level=None, errors='raise')

Ce face DataFrame.drop()

df.drop(columns=["a", "b"]) scoate coloanele date, iar df.drop(index=[0, 2]) scoate rândurile cu acele etichete. Forma cu columns= / index= este mai ușor de citit decât varianta veche df.drop("a", axis=1).

Ca să scoți rândurile care îndeplinesc o condiție, poți da etichetele lor: df.drop(df[df["nota"] < 5].index). De multe ori este mai simplu să păstrezi rândurile dorite cu un filtru: df[df["nota"] >= 5].

Dacă un nume nu există, primești KeyError. Cu errors="ignore" numele lipsă sunt sărite.

Parametri

Parametru Descriere
columns Un nume de coloană sau o listă de nume de eliminat.
index O etichetă de rând sau o listă de etichete de eliminat.
labels, axis Forma veche: etichetele și axa (0 / "index" pentru rânduri, 1 / "columns" pentru coloane).
errors "raise" (implicit) sau "ignore".
level Pentru index pe mai multe niveluri.

Ce returnează

Un DataFrame nou, fără rândurile sau coloanele eliminate.

Exemple

Exemplul 1: Eliminarea coloanelor și a rândurilor

import pandas as pd

df = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana", "Andrei"],
    "oras": ["Iași", "Cluj", "Iași", "Brașov"],
    "nota": [9.5, 4.0, 8.5, 3.5],
    "cod_intern": [101, 102, 103, 104],
})

print(df.drop(columns=["cod_intern", "oras"]))
print()
print(df.drop(index=[1, 3]))

Rezultat

     nume  nota
0     Ana   9.5
1   Mihai   4.0
2   Ioana   8.5
3  Andrei   3.5

    nume  oras  nota  cod_intern
0    Ana  Iași   9.5         101
2  Ioana  Iași   8.5         103

Exemplul 2: Rânduri după condiție și nume care lipsesc

Se scot elevii cu nota sub 5 (etichetele 1 și 3). A doua linie nu dă eroare, deși coloana telefon nu există.

import pandas as pd

df = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana", "Andrei"],
    "nota": [9.5, 4.0, 8.5, 3.5],
})

promovati = df.drop(df[df["nota"] < 5].index)
print(promovati)
print()
print(df.drop(columns=["telefon"], errors="ignore").columns.tolist())

Rezultat

    nume  nota
0    Ana   9.5
2  Ioana   8.5

['nume', 'nota']

Greșeli frecvente

  • Scrii df.drop("nota") fără columns=: pandas caută un rând cu eticheta „nota” și aruncă KeyError.
  • Dai poziții în loc de etichete: după o filtrare, df.drop(index=[0]) scoate rândul cu eticheta 0, care poate nu mai este primul (sau nu mai există).
  • Nu salvezi rezultatul: df.drop(columns=["x"]) singur nu schimbă df. Scrie df = df.drop(...).

Comenzi înrudite

  • DataFrame.rename(): Schimbă numele coloanelor sau etichetele rândurilor, cu un dicționar {vechi: nou} sau cu o funcție precum str.lower.
  • DataFrame.assign() și coloane noi: Adaugă coloane calculate: df[„col”] = … modifică tabelul, iar assign() returnează un tabel nou și acceptă funcții lambda.
  • Filtrare cu condiții (boolean indexing): Păstrează doar rândurile care îndeplinesc o condiție, cu operatorii &, |, ~ pentru condiții compuse și Series.between pentru intervale.
  • DataFrame.loc: Selectează rânduri și coloane după etichete (numele din index și numele coloanelor) și permite modificarea valorilor.