Ce face Series.str (lower, upper, strip, len, replace, slice)
O coloană de text nu are direct metodele unui șir Python: df["nume"].lower() dă eroare. Metodele de text stau în accesorul .str: df["nume"].str.lower() aplică lower() pe fiecare valoare și returnează o coloană nouă, de aceeași lungime.
Cele mai folosite metode sunt str.lower(), str.upper(), str.title() (prima literă mare la fiecare cuvânt), str.strip() (scoate spațiile de la capete), str.len() (numărul de caractere), str.replace() (înlocuiește un text cu altul) și str.slice(start, stop) (o bucată din text, ca s[start:stop]). Le poți înlănțui: serie.str.strip().str.title().
Valorile lipsă rămân lipsă: metodele .str le sar, fără eroare. În pandas 3, coloanele de text au implicit tipul str. La str.replace(), parametrul regex este implicit False (din pandas 2.0), deci textul căutat este luat literal.
Parametri
| Parametru | Descriere |
|---|---|
pat, repl |
La str.replace(): textul căutat și textul cu care îl înlocuiești. |
regex |
La str.replace(): True dacă pat este o expresie regulată. Implicit False. |
n |
La str.replace(): câte înlocuiri pe valoare. Implicit -1 (toate). |
to_strip |
La str.strip(): caracterele scoase de la capete. Implicit spațiile albe. |
start, stop, step |
La str.slice(): pozițiile de început și de sfârșit (sfârșitul nu este inclus) și pasul. |
Ce returnează
O Series nouă, cu același index. str.len() returnează numere; celelalte returnează text.
Exemple
Exemplul 1: Curățarea unor nume scrise neuniform
str.strip() scoate spațiile de la capete, iar str.title() pune prima literă mare la fiecare cuvânt.
import pandas as pd
nume = pd.Series([" ana POPESCU ", "Mihai ionescu", " ELENA "])
curat = nume.str.strip().str.title()
print(curat)
print(curat.str.upper().tolist())
print(curat.str.lower().tolist())
print(curat.str.len().tolist())
Rezultat
0 Ana Popescu
1 Mihai Ionescu
2 Elena
dtype: str
['ANA POPESCU', 'MIHAI IONESCU', 'ELENA']
['ana popescu', 'mihai ionescu', 'elena']
[11, 13, 5]
Exemplul 2: Înlocuire și tăiere
Scoatem cratimele din numerele de telefon, apoi păstrăm primele 4 cifre (prefixul).
import pandas as pd
telefoane = pd.Series(["0722-123-456", "0744-987-654", "0232-111-222"])
fara_cratime = telefoane.str.replace("-", "")
print(fara_cratime.tolist())
print(fara_cratime.str.slice(0, 4).tolist())
print(fara_cratime.str.slice(-3).tolist())
Rezultat
['0722123456', '0744987654', '0232111222']
['0722', '0744', '0232']
['456', '654', '222']
Exemplul 3: Pe o coloană dintr-un tabel, cu o valoare lipsă
Valoarea lipsă rămâne lipsă (NaN) și nu oprește calculul.
import pandas as pd
df = pd.DataFrame({"client": ["Ana", "Mihai", "Elena"],
"oras": [" iași", "CLUJ ", None]})
df["oras"] = df["oras"].str.strip().str.capitalize()
df["litere"] = df["oras"].str.len()
print(df)
Rezultat
client oras litere
0 Ana Iași 4.0
1 Mihai Cluj 4.0
2 Elena NaN NaN
Greșeli frecvente
- Scrii
df["nume"].lower()fără.str. PrimeștiAttributeError, pentru căSeriesnu are metodalower. - Folosești
.strpe o coloană de numere. ApareAttributeError: Can only use .str accessor with string values; transformă întâi cuastype(str). - Crezi că
str.strip()scoate și spațiile din mijloc. Le scoate doar pe cele de la capete; pentru restul foloseștestr.replace(" ", ""). - Uiți că rezultatul este o coloană nouă:
df["oras"].str.upper()singur nu schimbă tabelul. Atribuie rezultatul înapoi:df["oras"] = df["oras"].str.upper().
Comenzi înrudite
str.contains(), str.startswith(), str.endswith(): Verifică dacă fiecare text conține, începe sau se termină cu un anumit șir; rezultatul True/False se folosește la filtrare.str.split() și str.extract(): Împarte textul din fiecare valoare în bucăți (str.split) sau scoate părți cu o expresie regulată (str.extract), în coloane noi.DataFrame.replace(): Înlocuiește valori anume (o valoare, o listă, un dicționar) sau, cu regex=True, părți de text potrivite de o expresie regulată.DataFrame.astype() și pd.to_numeric(): Schimbă tipul unei coloane (int, float, category, str); pd.to_numeric transformă textul în numere și poate pune NaN la valorile greșite.
Întrebări & Exemple de Cod:
Series.str (lower, upper, strip, len, replace, slice)Ai o nelămurire despre utilizarea comenzii
Series.str (lower, upper, strip, len, replace, slice)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.