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. Scriedf = 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.