Skip to content

Commit f2302d6

Browse files
kaoboyandyWillAyd
authored andcommitted
DOC: update the pandas.Series.map docstring (pandas-dev#20450)
1 parent 92dcf5f commit f2302d6

File tree

1 file changed

+50
-68
lines changed

1 file changed

+50
-68
lines changed

pandas/core/series.py

+50-68
Original file line numberDiff line numberDiff line change
@@ -2951,74 +2951,25 @@ def unstack(self, level=-1, fill_value=None):
29512951

29522952
def map(self, arg, na_action=None):
29532953
"""
2954-
Map values of Series using input correspondence (a dict, Series, or
2955-
function).
2954+
Map values of Series according to input correspondence.
2955+
2956+
Used for substituting each value in a Series with another value,
2957+
that may be derived from a function, a ``dict`` or
2958+
a :class:`Series`.
29562959
29572960
Parameters
29582961
----------
29592962
arg : function, dict, or Series
29602963
Mapping correspondence.
2961-
na_action : {None, 'ignore'}
2962-
If 'ignore', propagate NA values, without passing them to the
2964+
na_action : {None, 'ignore'}, default None
2965+
If 'ignore', propagate NaN values, without passing them to the
29632966
mapping correspondence.
29642967
29652968
Returns
29662969
-------
2967-
y : Series
2970+
Series
29682971
Same index as caller.
29692972
2970-
Examples
2971-
--------
2972-
2973-
Map inputs to outputs (both of type `Series`):
2974-
2975-
>>> x = pd.Series([1,2,3], index=['one', 'two', 'three'])
2976-
>>> x
2977-
one 1
2978-
two 2
2979-
three 3
2980-
dtype: int64
2981-
2982-
>>> y = pd.Series(['foo', 'bar', 'baz'], index=[1,2,3])
2983-
>>> y
2984-
1 foo
2985-
2 bar
2986-
3 baz
2987-
2988-
>>> x.map(y)
2989-
one foo
2990-
two bar
2991-
three baz
2992-
2993-
If `arg` is a dictionary, return a new Series with values converted
2994-
according to the dictionary's mapping:
2995-
2996-
>>> z = {1: 'A', 2: 'B', 3: 'C'}
2997-
2998-
>>> x.map(z)
2999-
one A
3000-
two B
3001-
three C
3002-
3003-
Use na_action to control whether NA values are affected by the mapping
3004-
function.
3005-
3006-
>>> s = pd.Series([1, 2, 3, np.nan])
3007-
3008-
>>> s2 = s.map('this is a string {}'.format, na_action=None)
3009-
0 this is a string 1.0
3010-
1 this is a string 2.0
3011-
2 this is a string 3.0
3012-
3 this is a string nan
3013-
dtype: object
3014-
3015-
>>> s3 = s.map('this is a string {}'.format, na_action='ignore')
3016-
0 this is a string 1.0
3017-
1 this is a string 2.0
3018-
2 this is a string 3.0
3019-
3 NaN
3020-
dtype: object
3021-
30222973
See Also
30232974
--------
30242975
Series.apply : For applying more complex functions on a Series.
@@ -3027,20 +2978,51 @@ def map(self, arg, na_action=None):
30272978
30282979
Notes
30292980
-----
3030-
When `arg` is a dictionary, values in Series that are not in the
2981+
When ``arg`` is a dictionary, values in Series that are not in the
30312982
dictionary (as keys) are converted to ``NaN``. However, if the
30322983
dictionary is a ``dict`` subclass that defines ``__missing__`` (i.e.
30332984
provides a method for default values), then this default is used
3034-
rather than ``NaN``:
3035-
3036-
>>> from collections import Counter
3037-
>>> counter = Counter()
3038-
>>> counter['bar'] += 1
3039-
>>> y.map(counter)
3040-
1 0
3041-
2 1
3042-
3 0
3043-
dtype: int64
2985+
rather than ``NaN``.
2986+
2987+
Examples
2988+
--------
2989+
>>> s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
2990+
>>> s
2991+
0 cat
2992+
1 dog
2993+
2 NaN
2994+
3 rabbit
2995+
dtype: object
2996+
2997+
``map`` accepts a ``dict`` or a ``Series``. Values that are not found
2998+
in the ``dict`` are converted to ``NaN``, unless the dict has a default
2999+
value (e.g. ``defaultdict``):
3000+
3001+
>>> s.map({'cat': 'kitten', 'dog': 'puppy'})
3002+
0 kitten
3003+
1 puppy
3004+
2 NaN
3005+
3 NaN
3006+
dtype: object
3007+
3008+
It also accepts a function:
3009+
3010+
>>> s.map('I am a {}'.format)
3011+
0 I am a cat
3012+
1 I am a dog
3013+
2 I am a nan
3014+
3 I am a rabbit
3015+
dtype: object
3016+
3017+
To avoid applying the function to missing values (and keep them as
3018+
``NaN``) ``na_action='ignore'`` can be used:
3019+
3020+
>>> s.map('I am a {}'.format, na_action='ignore')
3021+
0 I am a cat
3022+
1 I am a dog
3023+
2 NaN
3024+
3 I am a rabbit
3025+
dtype: object
30443026
"""
30453027
new_values = super(Series, self)._map_values(
30463028
arg, na_action=na_action)

0 commit comments

Comments
 (0)