Ce face DataFrame.replace()
replace("Bucuresti", "București") înlocuiește peste tot în tabel valoarea întreagă „Bucuresti”. Poți da o listă de valori care primesc aceeași valoare nouă (replace(["-", "n/a"], pd.NA)) sau un dicționar {vechi: nou}. Un dicționar de dicționare, {"coloana": {vechi: nou}}, limitează înlocuirea la o coloană.
Implicit se compară valoarea întreagă din celulă: „Iasi” nu se schimbă în „Iasi, România”. Cu regex=True, to_replace este tratat ca expresie regulată și se înlocuiesc doar părțile potrivite din text, de exemplu toate spațiile dintr-un număr de telefon.
Spre deosebire de map(dict), valorile care nu sunt în dicționar rămân neschimbate.
Parametri
| Parametru | Descriere |
|---|---|
to_replace |
Ce se caută: o valoare, o listă, un dicționar {vechi: nou}, un dicționar pe coloane sau, cu regex=True, o expresie regulată. |
value |
Valoarea nouă (când to_replace nu este dicționar). |
regex |
Dacă este True, to_replace este o expresie regulată aplicată pe text. |
Ce returnează
Un obiect nou, cu valorile înlocuite.
Exemple
Exemplul 1: Valori, liste și dicționare
import pandas as pd
df = pd.DataFrame({
"oras": ["Iasi", "Cluj", "Bucuresti", "Iasi"],
"nota": [9, -1, 8, 0],
})
print(df.replace({"Iasi": "Iași", "Bucuresti": "București"}))
print()
print(df.replace({"nota": {-1: 5, 0: 5}}))
Rezultat
oras nota
0 Iași 9
1 Cluj -1
2 București 8
3 Iași 0
oras nota
0 Iasi 9
1 Cluj 5
2 Bucuresti 8
3 Iasi 5
Exemplul 2: Valori care înseamnă „lipsă”
„-” și „n/a” devin valori lipsă, apoi coloana se poate converti în numere.
import pandas as pd
lei = pd.Series(["120", "-", "85", "n/a"])
curat = lei.replace(["-", "n/a"], pd.NA)
print(curat)
print(pd.to_numeric(curat).sum())
Rezultat
0 120
1 NaN
2 85
3 NaN
dtype: str
205.0
Exemplul 3: Înlocuire cu expresii regulate
Se scot spațiile și punctele din numerele de telefon, apoi prefixul +40 devine 0.
import pandas as pd
telefon = pd.Series(["0740 123 456", "+40 721.555.010", "0232 21 00 11"])
curat = telefon.replace(r"[\s.]", "", regex=True).replace(r"^\+40", "0", regex=True)
print(curat)
Rezultat
0 0740123456
1 0721555010
2 0232210011
dtype: str
Greșeli frecvente
- Aștepți să schimbe o bucată de text fără
regex=True:s.replace("a", "ă")schimbă doar celulele care sunt exact „a”. Pentru subșiruri foloseșteregex=Truesaus.str.replace("a", "ă"). - Uiți să păstrezi rezultatul:
df.replace(...)returnează un tabel nou. Scriedf = df.replace(...). - Într-o expresie regulată uiți că
.,+,(au sens special. Pune\în față (r"\+40") sau foloseșteregex=False.
Comenzi înrudite
Series.map() și DataFrame.map(): Înlocuiește fiecare valoare după un dicționar sau o funcție (Series.map); DataFrame.map aplică o funcție pe fiecare celulă.Series.str (lower, upper, strip, len, replace, slice): Accesorul .str aplică metode de text pe fiecare valoare dintr-o coloană: litere mici, spații, lungime, înlocuire, tăiere.fillna() / ffill() / bfill(): Completează valorile lipsă cu o valoare fixă, cu valori diferite pe coloane, cu media sau cu valoarea anterioară ori următoare.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:
DataFrame.replace()Ai o nelămurire despre utilizarea comenzii
DataFrame.replace()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.