Series.map() și DataFrame.map() în pandas

Înlocuiește fiecare valoare după un dicționar sau o funcție (Series.map); DataFrame.map aplică o funcție pe fiecare celulă.

Sintaxă
s.map(func, na_action=None)
df.map(func, na_action=None, **kwargs)

Ce face Series.map() și DataFrame.map()

Series.map() transformă fiecare valoare a unei coloane. Cu un dicționar, fiecare valoare este înlocuită cu valoarea de la cheia ei; valorile care nu sunt chei devin NaN. Cu o funcție, aceasta este apelată pentru fiecare valoare.

DataFrame.map() aplică o funcție pe fiecare celulă a tabelului, de exemplu pentru a formata numerele ca text. Ea a apărut în pandas 2.1 și înlocuiește vechea DataFrame.applymap(), care a fost eliminată în pandas 3. Series.map există de la primele versiuni.

Cu na_action="ignore", valorile lipsă sunt lăsate așa cum sunt, fără să fie trimise funcției.

Parametri

Parametru Descriere
func La Series.map: un dicționar, un Series sau o funcție. La DataFrame.map: o funcție care primește o valoare și returnează una.
na_action None (implicit) sau "ignore": valorile lipsă nu ajung la funcție.
**kwargs La DataFrame.map: argumente în plus pentru funcție.

Ce returnează

Un Series nou (Series.map) sau un DataFrame nou de aceeași formă (DataFrame.map).

Exemple

Exemplul 1: Înlocuire după dicționar

Codurile de județ devin nume de orașe. „TM” nu este în dicționar și devine NaN.

import pandas as pd

df = pd.DataFrame({"nume": ["Ana", "Mihai", "Ioana", "Elena"], "judet": ["IS", "CJ", "IS", "TM"]})

orase = {"IS": "Iași", "CJ": "Cluj-Napoca", "BV": "Brașov"}
df["oras"] = df["judet"].map(orase)
print(df)

Rezultat

    nume judet         oras
0    Ana    IS         Iași
1  Mihai    CJ  Cluj-Napoca
2  Ioana    IS         Iași
3  Elena    TM          NaN

Exemplul 2: Series.map cu o funcție și na_action

import pandas as pd

preturi = pd.Series([12.5, None, 7.0])
print(preturi.map(lambda x: f"{x:.2f} lei", na_action="ignore"))

Rezultat

0    12.50 lei
1          NaN
2     7.00 lei
dtype: str

Exemplul 3: DataFrame.map pe fiecare celulă

Toate valorile din tabel sunt formatate ca text cu două zecimale.

import pandas as pd

vanzari = pd.DataFrame(
    {"Iași": [1200.5, 980.0], "Cluj": [1430.25, 1105.75]},
    index=["ian", "feb"],
)
print(vanzari.map(lambda x: f"{x:.2f} lei"))

Rezultat

            Iași         Cluj
ian  1200.50 lei  1430.25 lei
feb   980.00 lei  1105.75 lei

Greșeli frecvente

  • Folosești df.applymap(...) din tutoriale vechi: metoda a fost eliminată în pandas 3. Scrie df.map(...).
  • Te miră NaN-urile după map(dict): orice valoare care lipsește din dicționar devine lipsă. Dacă vrei să păstrezi valorile necunoscute, folosește replace(dict) sau s.map(d).fillna(s).
  • Aștepți ca DataFrame.map să primească rânduri sau coloane: primește câte o singură valoare. Pentru rânduri și coloane folosește apply.

Comenzi înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Series.map() și DataFrame.map()

Ai o nelămurire despre utilizarea comenzii Series.map() și DataFrame.map() 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.