pandas.Series.map#
- Series.map(func=None, na_action=None, engine=None, **kwargs)[source]#
Map values of Series according to an input mapping or function.
Used for substituting each value in a Series with another value, that may be derived from a function, a
dictor aSeries.- Parameters:
- funcfunction, collections.abc.Mapping subclass or Series
Function or mapping correspondence.
- na_action{None, ‘ignore’}, default None
If ‘ignore’, propagate NaN values, without passing them to the mapping correspondence.
- enginedecorator, optional
Choose the execution engine to use to run the function. Only used for functions. If
mapis called with a mapping orSeries, an exception will be raised. Ifengineis not provided the function will be executed by the regular Python interpreter.Options include JIT compilers such as Numba, Bodo or Blosc2, which in some cases can speed up the execution. To use an executor you can provide the decorators
numba.jit,numba.njit,bodo.jitorblosc2.jit. You can also provide the decorator with parameters, likenumba.jit(nogit=True).Not all functions can be executed with all execution engines. In general, JIT compilers will require type stability in the function (no variable should change data type during the execution). And not all pandas and NumPy APIs are supported. Check the engine documentation for limitations.
Added in version 3.0.0.
- **kwargs
Additional keyword arguments to pass as keywords arguments to arg.
Added in version 3.0.0.
- Returns:
- Series
Same index as caller.
See also
Series.applyFor applying more complex functions on a Series.
Series.replaceReplace values given in to_replace with value.
DataFrame.applyApply a function row-/column-wise.
DataFrame.mapApply a function elementwise on a whole DataFrame.
Notes
When
argis a dictionary, values in Series that are not in the dictionary (as keys) are converted toNaN. However, if the dictionary is adictsubclass that defines__missing__(i.e. provides a method for default values), then this default is used rather thanNaN.Examples
>>> s = pd.Series(["cat", "dog", np.nan, "rabbit"]) >>> s 0 cat 1 dog 2 NaN 3 rabbit dtype: object
mapaccepts adictor aSeries. Values that are not found in thedictare converted toNaN, unless the dict has a default value (e.g.defaultdict):>>> s.map({"cat": "kitten", "dog": "puppy"}) 0 kitten 1 puppy 2 NaN 3 NaN dtype: object
It also accepts a function:
>>> s.map("I am a {}".format) 0 I am a cat 1 I am a dog 2 I am a nan 3 I am a rabbit dtype: object
To avoid applying the function to missing values (and keep them as
NaN)na_action='ignore'can be used:>>> s.map("I am a {}".format, na_action="ignore") 0 I am a cat 1 I am a dog 2 NaN 3 I am a rabbit dtype: object
For categorical data, the function is only applied to the categories:
>>> s = pd.Series(list("cabaa")) >>> s.map(print) c a b a a 0 None 1 None 2 None 3 None 4 None dtype: object
>>> s_cat = s.astype("category") >>> s_cat.map(print) # function called once per unique category a b c 0 None 1 None 2 None 3 None 4 None dtype: object