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

str.split() și str.extract() în pandas

Împarte textul din fiecare valoare în bucăți (str.split) sau scoate părți cu o expresie regulată (str.extract), în coloane noi.

Sintaxă
serie.str.split(pat=None, *, n=-1, expand=False, regex=None)  serie.str.extract(pat, flags=0, expand=True)

Ce face str.split() și str.extract()

str.split() împarte fiecare text după un separator (implicit spațiile). Fără expand primești o coloană de liste; cu expand=True primești un DataFrame, cu câte o coloană pentru fiecare bucată. Parametrul n limitează numărul de tăieturi, util când ultima parte poate conține și ea separatorul.

Dacă vrei doar o bucată, combină cu .str[i]: serie.str.split("@").str[1] ia partea de după @.

str.extract() folosește o expresie regulată cu grupuri între paranteze și pune fiecare grup într-o coloană. Grupurile cu nume, (?P<nume>...), dau numele coloanelor. Dacă textul nu se potrivește, rezultatul este o valoare lipsă.

Parametri

Parametru Descriere
pat La split: separatorul (implicit spații). La extract: expresia regulată cu cel puțin un grup.
n La split: numărul maxim de tăieturi. Implicit -1 (toate).
expand La split: True dă un DataFrame. La extract: implicit True, mereu DataFrame.
regex La split: dacă separatorul este expresie regulată. Implicit None: doar separatorii de mai multe caractere sunt tratați ca regex.
flags La extract: opțiuni din modulul re.

Ce returnează

str.split(): o Series de liste sau, cu expand=True, un DataFrame. str.extract(): un DataFrame cu câte o coloană pe grup.

Exemple

Exemplul 1: Nume și prenume în coloane separate

Cu n=1 se taie doar la primul spațiu, așa că prenumele compuse rămân întregi.

import pandas as pd

df = pd.DataFrame({"persoana": ["Popescu Ana", "Ionescu Mihai Andrei", "Georgescu Elena"]})
print(df["persoana"].str.split().tolist())
df[["nume", "prenume"]] = df["persoana"].str.split(" ", n=1, expand=True)
print(df)

Rezultat

[['Popescu', 'Ana'], ['Ionescu', 'Mihai', 'Andrei'], ['Georgescu', 'Elena']]
               persoana       nume       prenume
0           Popescu Ana    Popescu           Ana
1  Ionescu Mihai Andrei    Ionescu  Mihai Andrei
2       Georgescu Elena  Georgescu         Elena

Exemplul 2: O singură bucată cu .str[i]

import pandas as pd

emailuri = pd.Series(["ana@gmail.com", "mihai@firma.ro", "elena@yahoo.ro"])
print(emailuri.str.split("@").str[1].tolist())
print(emailuri.str.split("@").str[0].str.title().tolist())

Rezultat

['gmail.com', 'firma.ro', 'yahoo.ro']
['Ana', 'Mihai', 'Elena']

Exemplul 3: Cantitate și preț scoase cu str.extract

Grupurile cu nume devin coloanele buc și pret. Rândul care nu se potrivește primește valori lipsă.

import pandas as pd

comenzi = pd.Series(["3 buc x 12 lei", "10 buc x 4 lei", "fără detalii"])
detalii = comenzi.str.extract(r"(?P<buc>\d+) buc x (?P<pret>\d+) lei")
print(detalii)
print(detalii.dropna().astype(int).prod(axis=1).tolist())

Rezultat

   buc pret
0    3   12
1   10    4
2  NaN  NaN
[36, 40]

Greșeli frecvente

  • Uiți expand=True și atribui rezultatul în două coloane. Fără el primești o coloană de liste, nu un tabel, iar bucățile ajung amestecate sau apare o eroare. Cu expand=True fiecare bucată are coloana ei.
  • Folosești str.extract() cu o expresie fără paranteze. Apare ValueError: pattern contains no capture groups.
  • Te aștepți ca str.extract() să dea numere. Rezultatul este text; transformă cu astype(int) sau pd.to_numeric().

Comenzi înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: str.split() și str.extract()

Ai o nelămurire despre utilizarea comenzii str.split() și str.extract() 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.