Skip to content

Commit 8fcc137

Browse files
topper-123mroeschke
andcommitted
DOC: cleanup whatsnew entry for na_action='ignore' (pandas-dev#52355)
* DOC: cleanup whatsnew entry for na_action='ignore' * Update doc/source/whatsnew/v2.1.0.rst Co-authored-by: Matthew Roeschke <[email protected]> * Update doc/source/whatsnew/v2.1.0.rst Co-authored-by: Matthew Roeschke <[email protected]> * Update doc/source/whatsnew/v2.1.0.rst Co-authored-by: Matthew Roeschke <[email protected]> * Update doc/source/whatsnew/v2.1.0.rst Co-authored-by: Matthew Roeschke <[email protected]> * update comment --------- Co-authored-by: Matthew Roeschke <[email protected]>
1 parent c4b69b4 commit 8fcc137

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

doc/source/whatsnew/v2.1.0.rst

+49-6
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,51 @@ enhancement1
2121

2222
.. _whatsnew_210.enhancements.enhancement2:
2323

24-
enhancement2
25-
^^^^^^^^^^^^
24+
``map(func, na_action="ignore")`` now works for all array types
25+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
26+
27+
When given a callable, :meth:`Series.map` applies the callable to all elements of the :class:`Series`.
28+
Similarly, :meth:`DataFrame.applymap` applies the callable to all elements of the :class:`DataFrame`,
29+
while :meth:`Index.map` applies the callable to all elements of the :class:`Index`.
30+
31+
Frequently, it is not desirable to apply the callable to nan-like values of the array and to avoid doing
32+
that, the ``map`` method could be called with ``na_action="ignore"``, i.e. ``ser.map(func, na_action="ignore")``.
33+
However, ``na_action="ignore"`` was not implemented for many ``ExtensionArray`` and ``Index`` types
34+
and ``na_action="ignore"`` did not work correctly for any ``ExtensionArray`` subclass except the nullable numeric ones (i.e. with dtype :class:`Int64` etc.).
35+
36+
``na_action="ignore"`` now works for all array types (:issue:`52219`, :issue:`51645`, :issue:`51809`, :issue:`51936`, :issue:`52033`; :issue:`52096`).
37+
38+
*Previous behavior*:
39+
40+
.. code-block:: ipython
41+
42+
In [1]: ser = pd.Series(["a", "b", np.nan], dtype="category")
43+
In [2]: ser.map(str.upper, na_action="ignore")
44+
NotImplementedError
45+
In [3]: df = pd.DataFrame(ser)
46+
In [4]: df.applymap(str.upper, na_action="ignore") # worked for DataFrame
47+
0
48+
0 A
49+
1 B
50+
2 NaN
51+
In [5]: idx = pd.Index(ser)
52+
In [6]: idx.map(str.upper, na_action="ignore")
53+
TypeError: CategoricalIndex.map() got an unexpected keyword argument 'na_action'
54+
55+
*New behavior*:
56+
57+
.. ipython:: python
58+
59+
ser = pd.Series(["a", "b", np.nan], dtype="category")
60+
ser.map(str.upper, na_action="ignore")
61+
df = pd.DataFrame(ser)
62+
df.applymap(str.upper, na_action="ignore")
63+
idx = pd.Index(ser)
64+
idx.map(str.upper, na_action="ignore")
65+
66+
Also, note that :meth:`Categorical.map` implicitly has had its ``na_action`` set to ``"ignore"`` by default.
67+
This has been deprecated and will :meth:`Categorical.map` in the future change the default
68+
to ``na_action=None``, like for all the other array types.
2669

2770
.. _whatsnew_210.enhancements.other:
2871

@@ -34,6 +77,7 @@ Other enhancements
3477
- Implemented ``__pandas_priority__`` to allow custom types to take precedence over :class:`DataFrame`, :class:`Series`, :class:`Index`, or :class:`ExtensionArray` for arithmetic operations, :ref:`see the developer guide <extending.pandas_priority>` (:issue:`48347`)
3578
- :meth:`MultiIndex.sort_values` now supports ``na_position`` (:issue:`51612`)
3679
- :meth:`MultiIndex.sortlevel` and :meth:`Index.sortlevel` gained a new keyword ``na_position`` (:issue:`51612`)
80+
- :meth:`arrays.DatetimeArray.map`, :meth:`arrays.TimedeltaArray.map` and :meth:`arrays.PeriodArray.map` can now take a ``na_action`` argument (:issue:`51644`)
3781
- Improve error message when setting :class:`DataFrame` with wrong number of columns through :meth:`DataFrame.isetitem` (:issue:`51701`)
3882
- Let :meth:`DataFrame.to_feather` accept a non-default :class:`Index` and non-string column names (:issue:`51787`)
3983
- :class:`api.extensions.ExtensionArray` now has a :meth:`~api.extensions.ExtensionArray.map` method (:issue:`51809`)
@@ -42,7 +86,6 @@ Other enhancements
4286
- Improved error message when creating a DataFrame with empty data (0 rows), no index and an incorrect number of columns. (:issue:`52084`)
4387
- :meth:`DataFrame.applymap` now uses the :meth:`~api.extensions.ExtensionArray.map` method of underlying :class:`api.extensions.ExtensionArray` instances (:issue:`52219`)
4488
- :meth:`arrays.SparseArray.map` now supports ``na_action`` (:issue:`52096`).
45-
- :meth:`Categorical.map` and :meth:`CategoricalIndex.map` now have a ``na_action`` parameter (:issue:`44279`)
4689
- Add dtype of categories to ``repr`` information of :class:`CategoricalDtype` (:issue:`52179`)
4790
-
4891

@@ -168,15 +211,15 @@ Categorical
168211
Datetimelike
169212
^^^^^^^^^^^^
170213
- Bug in :meth:`Timestamp.round` with values close to the implementation bounds returning incorrect results instead of raising ``OutOfBoundsDatetime`` (:issue:`51494`)
171-
- :meth:`arrays.DatetimeArray.map` can now take a ``na_action`` argument. :meth:`DatetimeIndex.map` with ``na_action="ignore"`` now works as expected. (:issue:`51644`)
214+
- :meth:`DatetimeIndex.map` with ``na_action="ignore"`` now works as expected. (:issue:`51644`)
172215
- Bug in :meth:`arrays.DatetimeArray.map` and :meth:`DatetimeIndex.map`, where the supplied callable operated array-wise instead of element-wise (:issue:`51977`)
173216
-
174217

175218
Timedelta
176219
^^^^^^^^^
177220
- Bug in :meth:`Timedelta.round` with values close to the implementation bounds returning incorrect results instead of raising ``OutOfBoundsTimedelta`` (:issue:`51494`)
178221
- Bug in :class:`TimedeltaIndex` division or multiplication leading to ``.freq`` of "0 Days" instead of ``None`` (:issue:`51575`)
179-
- :meth:`arrays.TimedeltaArray.map` can now take a ``na_action`` argument. :meth:`TimedeltaIndex.map` with ``na_action="ignore"`` now works as expected. (:issue:`51644`)
222+
- :meth:`TimedeltaIndex.map` with ``na_action="ignore"`` now works as expected (:issue:`51644`)
180223
- Bug in :meth:`arrays.TimedeltaArray.map` and :meth:`TimedeltaIndex.map`, where the supplied callable operated array-wise instead of element-wise (:issue:`51977`)
181224
-
182225

@@ -232,7 +275,7 @@ I/O
232275
Period
233276
^^^^^^
234277
- Bug in :class:`PeriodDtype` constructor failing to raise ``TypeError`` when no argument is passed or when ``None`` is passed (:issue:`27388`)
235-
- :meth:`arrays.PeriodArray.map` can now take a ``na_action`` argument. :meth:`PeriodIndex.map` with ``na_action="ignore"`` now works as expected. (:issue:`51644`)
278+
- :meth:`PeriodIndex.map` with ``na_action="ignore"`` now works as expected (:issue:`51644`)
236279
- Bug in :class:`PeriodDtype` constructor raising ``ValueError`` instead of ``TypeError`` when an invalid type is passed (:issue:`51790`)
237280
- Bug in :meth:`arrays.PeriodArray.map` and :meth:`PeriodIndex.map`, where the supplied callable operated array-wise instead of element-wise (:issue:`51977`)
238281
-

0 commit comments

Comments
 (0)