Ce face DataFrame.sort_values() și sort_index()
sort_values("nota") ordonează rândurile crescător după coloana nota; cu ascending=False ordinea devine descrescătoare. Pentru mai multe coloane dai o listă: by=["oras", "nota"] sortează după oraș, iar în cadrul aceluiași oraș după notă. ascending poate fi tot o listă, câte o direcție pentru fiecare coloană.
Valorile lipsă ajung implicit la final (na_position="last"); cu "first" ajung la început. Rândurile își păstrează etichetele; ignore_index=True le renumerotează de la 0. Parametrul key primește o funcție aplicată coloanei înainte de comparare, de exemplu pentru a ignora majusculele.
sort_index() ordonează după etichetele din index (sau, cu axis=1, după numele coloanelor). Este util după o sortare sau o grupare, ca să revii la ordinea inițială.
Parametri
| Parametru | Descriere |
|---|---|
by |
Numele coloanei sau o listă de nume după care se sortează (doar la sort_values). |
ascending |
True (implicit, crescător), False sau o listă de valori booleene, câte una pentru fiecare coloană din by. |
na_position |
"last" (implicit) sau "first": unde ajung valorile lipsă. |
ignore_index |
Dacă este True, rezultatul primește indexul 0, 1, 2, … |
key |
Funcție aplicată valorilor înainte de sortare (primește un Series, returnează un Series). |
kind |
Algoritmul: "quicksort", "mergesort", "heapsort", "stable". Contează doar la sortarea după o singură coloană. |
Ce returnează
Un DataFrame nou, cu rândurile în ordinea cerută.
Exemple
Exemplul 1: Sortare după una și după două coloane
A doua sortare pune orașele în ordine alfabetică, iar în fiecare oraș notele de la mare la mic.
import pandas as pd
df = pd.DataFrame({
"nume": ["Ana", "Mihai", "Ioana", "Andrei", "Elena"],
"oras": ["Iași", "Cluj", "Iași", "Cluj", "Brașov"],
"nota": [8.5, 7.0, 9.5, 9.0, 6.0],
})
print(df.sort_values("nota", ascending=False))
print()
print(df.sort_values(by=["oras", "nota"], ascending=[True, False], ignore_index=True))
Rezultat
nume oras nota
2 Ioana Iași 9.5
3 Andrei Cluj 9.0
0 Ana Iași 8.5
1 Mihai Cluj 7.0
4 Elena Brașov 6.0
nume oras nota
0 Elena Brașov 6.0
1 Andrei Cluj 9.0
2 Mihai Cluj 7.0
3 Ioana Iași 9.5
4 Ana Iași 8.5
Exemplul 2: Valori lipsă, key și sort_index
Cu na_position="first" luna fără date ajunge prima. sort_index() readuce rândurile în ordinea etichetelor.
import pandas as pd
vanzari = pd.DataFrame({
"luna": ["ian", "feb", "mar", "apr"],
"lei": [1450.0, None, 980.0, 2100.0],
})
sortat = vanzari.sort_values("lei", na_position="first")
print(sortat)
print()
print(sortat.sort_index())
print()
orase = pd.DataFrame({"oras": ["cluj", "Iași", "brașov"]})
print(orase.sort_values("oras", key=lambda s: s.str.lower()))
Rezultat
luna lei
1 feb NaN
2 mar 980.0
0 ian 1450.0
3 apr 2100.0
luna lei
0 ian 1450.0
1 feb NaN
2 mar 980.0
3 apr 2100.0
oras
2 brașov
0 cluj
1 Iași
Greșeli frecvente
- Dai lui
ascendingo listă de altă lungime decâtby:by=["oras", "nota"], ascending=[False]aruncăValueError. - Te aștepți ca indexul să fie din nou 0, 1, 2, … după sortare. Etichetele rămân cu rândurile; folosește
ignore_index=Truesaureset_index(drop=True). - Literele cu diacritice nu se sortează ca în dicționarul românesc: textul se compară după codul caracterelor, deci „Ștefan” ajunge după „Zoe”, iar majusculele înaintea literelor mici. Pentru majuscule ajută
key=lambda s: s.str.lower(). - Folosești
inplace=True: în pandas 3.1 este depreciat (apare un avertisment). Scriedf = df.sort_values(...).
Comenzi înrudite
head() / tail(): Afișează primele (head) sau ultimele (tail) n rânduri dintr-un DataFrame sau Series. Implicit 5.value_counts(): Numără de câte ori apare fiecare valoare într-o coloană (sau fiecare combinație de valori pe rânduri), în ordine descrescătoare.DataFrame.iloc: Selectează rânduri și coloane după poziție (0, 1, 2, …), ca la listele Python, cu interval care exclude capătul din dreapta.DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.
Întrebări & Exemple de Cod:
DataFrame.sort_values() și sort_index()Ai o nelămurire despre utilizarea comenzii
DataFrame.sort_values() și sort_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.