Skip to content

DOC: 1.3 release notes misc #42220

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 25, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 25 additions & 23 deletions doc/source/whatsnew/v1.3.0.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.. _whatsnew_130:

What's new in 1.3.0 (??)
------------------------
What's new in 1.3.0 (June ??)
-----------------------------

These are the changes in pandas 1.3.0. See :ref:`release` for a full changelog
including other versions of pandas.
Expand Down Expand Up @@ -124,7 +124,7 @@ which has been revised and improved (:issue:`39720`, :issue:`39317`, :issue:`404
- The methods :meth:`.Styler.highlight_null`, :meth:`.Styler.highlight_min`, and :meth:`.Styler.highlight_max` now allow custom CSS highlighting instead of the default background coloring (:issue:`40242`)
- :meth:`.Styler.apply` now accepts functions that return an ``ndarray`` when ``axis=None``, making it now consistent with the ``axis=0`` and ``axis=1`` behavior (:issue:`39359`)
- When incorrectly formatted CSS is given via :meth:`.Styler.apply` or :meth:`.Styler.applymap`, an error is now raised upon rendering (:issue:`39660`)
- :meth:`.Styler.format` now accepts the keyword argument ``escape`` for optional HTML and LaTex escaping (:issue:`40388`, :issue:`41619`)
- :meth:`.Styler.format` now accepts the keyword argument ``escape`` for optional HTML and LaTeX escaping (:issue:`40388`, :issue:`41619`)
- :meth:`.Styler.background_gradient` has gained the argument ``gmap`` to supply a specific gradient map for shading (:issue:`22727`)
- :meth:`.Styler.clear` now clears :attr:`Styler.hidden_index` and :attr:`Styler.hidden_columns` as well (:issue:`40484`)
- Added the method :meth:`.Styler.highlight_between` (:issue:`39821`)
Expand Down Expand Up @@ -252,7 +252,7 @@ Other enhancements
- :func:`to_numeric` now supports downcasting of nullable ``ExtensionDtype`` objects (:issue:`33013`)
- Added support for dict-like names in :class:`MultiIndex.set_names` and :class:`MultiIndex.rename` (:issue:`20421`)
- :func:`read_excel` can now auto-detect .xlsb files and older .xls files (:issue:`35416`, :issue:`41225`)
- :class:`ExcelWriter` now accepts an ``if_sheet_exists`` parameter to control the behaviour of append mode when writing to existing sheets (:issue:`40230`)
- :class:`ExcelWriter` now accepts an ``if_sheet_exists`` parameter to control the behavior of append mode when writing to existing sheets (:issue:`40230`)
- :meth:`.Rolling.sum`, :meth:`.Expanding.sum`, :meth:`.Rolling.mean`, :meth:`.Expanding.mean`, :meth:`.ExponentialMovingWindow.mean`, :meth:`.Rolling.median`, :meth:`.Expanding.median`, :meth:`.Rolling.max`, :meth:`.Expanding.max`, :meth:`.Rolling.min`, and :meth:`.Expanding.min` now support `Numba <http://numba.pydata.org/>`_ execution with the ``engine`` keyword (:issue:`38895`, :issue:`41267`)
- :meth:`DataFrame.apply` can now accept NumPy unary operators as strings, e.g. ``df.apply("sqrt")``, which was already the case for :meth:`Series.apply` (:issue:`39116`)
- :meth:`DataFrame.apply` can now accept non-callable DataFrame properties as strings, e.g. ``df.apply("size")``, which was already the case for :meth:`Series.apply` (:issue:`39116`)
Expand Down Expand Up @@ -306,7 +306,7 @@ As an example of this, given:
original = pd.Series(cat)
unique = original.unique()

*pandas < 1.3.0*:
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -316,7 +316,7 @@ As an example of this, given:
In [2]: original.dtype == unique.dtype
False

*pandas >= 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -338,7 +338,7 @@ Preserve dtypes in :meth:`DataFrame.combine_first`
df2
combined = df1.combine_first(df2)

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -349,7 +349,7 @@ Preserve dtypes in :meth:`DataFrame.combine_first`
C float64
dtype: object

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -372,7 +372,7 @@ values as measured by ``np.allclose``. Now no such casting occurs.
df = pd.DataFrame({'key': [1, 1], 'a': [True, False], 'b': [True, True]})
df

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -382,7 +382,7 @@ values as measured by ``np.allclose``. Now no such casting occurs.
key
1 True 2

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -400,7 +400,7 @@ Now, these methods will always return a float dtype. (:issue:`41137`)

df = pd.DataFrame({'a': [True], 'b': [1], 'c': [1.0]})

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -409,7 +409,7 @@ Now, these methods will always return a float dtype. (:issue:`41137`)
a b c
0 True 1 1.0

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -433,7 +433,7 @@ insert the values into the existing data rather than create an entirely new arra
In both the new and old behavior, the data in ``values`` is overwritten, but in
the old behavior the dtype of ``df["A"]`` changed to ``int64``.

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -448,7 +448,7 @@ the old behavior the dtype of ``df["A"]`` changed to ``int64``.

In pandas 1.3.0, ``df`` continues to share data with ``values``

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -475,7 +475,7 @@ never casting to the dtypes of the existing arrays.
In the old behavior, ``5`` was cast to ``float64`` and inserted into the existing
array backing ``df``:

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -485,7 +485,7 @@ array backing ``df``:

In the new behavior, we get a new array, and retain an integer-dtyped ``5``:

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand All @@ -508,7 +508,7 @@ casts to ``dtype=object`` (:issue:`38709`)
ser2 = orig.copy()
ser2.iloc[1] = 2.0

*pandas 1.2.x*
*Previous behavior*:

.. code-block:: ipython

Expand All @@ -524,7 +524,7 @@ casts to ``dtype=object`` (:issue:`38709`)
1 2.0
dtype: object

*pandas 1.3.0*
*New behavior*:

.. ipython:: python

Expand Down Expand Up @@ -787,6 +787,8 @@ For example:
1 2
2 12

*Future behavior*:

.. code-block:: ipython

In [5]: gb.prod(numeric_only=False)
Expand Down Expand Up @@ -816,8 +818,8 @@ Other Deprecations
- Deprecated :meth:`ExponentialMovingWindow.vol` (:issue:`39220`)
- Using ``.astype`` to convert between ``datetime64[ns]`` dtype and :class:`DatetimeTZDtype` is deprecated and will raise in a future version, use ``obj.tz_localize`` or ``obj.dt.tz_localize`` instead (:issue:`38622`)
- Deprecated casting ``datetime.date`` objects to ``datetime64`` when used as ``fill_value`` in :meth:`DataFrame.unstack`, :meth:`DataFrame.shift`, :meth:`Series.shift`, and :meth:`DataFrame.reindex`, pass ``pd.Timestamp(dateobj)`` instead (:issue:`39767`)
- Deprecated :meth:`.Styler.set_na_rep` and :meth:`.Styler.set_precision` in favour of :meth:`.Styler.format` with ``na_rep`` and ``precision`` as existing and new input arguments respectively (:issue:`40134`, :issue:`40425`)
- Deprecated :meth:`.Styler.where` in favour of using an alternative formulation with :meth:`Styler.applymap` (:issue:`40821`)
- Deprecated :meth:`.Styler.set_na_rep` and :meth:`.Styler.set_precision` in favor of :meth:`.Styler.format` with ``na_rep`` and ``precision`` as existing and new input arguments respectively (:issue:`40134`, :issue:`40425`)
- Deprecated :meth:`.Styler.where` in favor of using an alternative formulation with :meth:`Styler.applymap` (:issue:`40821`)
- Deprecated allowing partial failure in :meth:`Series.transform` and :meth:`DataFrame.transform` when ``func`` is list-like or dict-like and raises anything but ``TypeError``; ``func`` raising anything but a ``TypeError`` will raise in a future version (:issue:`40211`)
- Deprecated arguments ``error_bad_lines`` and ``warn_bad_lines`` in :meth:`read_csv` and :meth:`read_table` in favor of argument ``on_bad_lines`` (:issue:`15122`)
- Deprecated support for ``np.ma.mrecords.MaskedRecords`` in the :class:`DataFrame` constructor, pass ``{name: data[name] for name in data.dtype.names}`` instead (:issue:`40363`)
Expand Down Expand Up @@ -886,7 +888,7 @@ Performance improvements
- Performance improvement in :class:`.Styler` where render times are more than 50% reduced and now matches :meth:`DataFrame.to_html` (:issue:`39972` :issue:`39952`, :issue:`40425`)
- The method :meth:`.Styler.set_td_classes` is now as performant as :meth:`.Styler.apply` and :meth:`.Styler.applymap`, and even more so in some cases (:issue:`40453`)
- Performance improvement in :meth:`.ExponentialMovingWindow.mean` with ``times`` (:issue:`39784`)
- Performance improvement in :meth:`.GroupBy.apply` when requiring the python fallback implementation (:issue:`40176`)
- Performance improvement in :meth:`.GroupBy.apply` when requiring the Python fallback implementation (:issue:`40176`)
- Performance improvement in the conversion of a PyArrow Boolean array to a pandas nullable Boolean array (:issue:`41051`)
- Performance improvement for concatenation of data with type :class:`CategoricalDtype` (:issue:`40193`)
- Performance improvement in :meth:`.GroupBy.cummin` and :meth:`.GroupBy.cummax` with nullable data types (:issue:`37493`)
Expand Down Expand Up @@ -957,7 +959,7 @@ Numeric
- Bug in :class:`Series` and :class:`DataFrame` reductions with methods ``any`` and ``all`` not returning Boolean results for object data (:issue:`12863`, :issue:`35450`, :issue:`27709`)
- Bug in :meth:`Series.clip` would fail if the Series contains NA values and has nullable int or float as a data type (:issue:`40851`)
- Bug in :meth:`UInt64Index.where` and :meth:`UInt64Index.putmask` with an ``np.int64`` dtype ``other`` incorrectly raising ``TypeError`` (:issue:`41974`)
- Bug in :meth:`DataFrame.agg()` not sorting the aggregated axis in the order of the provided aggragation functions when one or more aggregation function fails to produce results (:issue:`33634`)
- Bug in :meth:`DataFrame.agg()` not sorting the aggregated axis in the order of the provided aggregation functions when one or more aggregation function fails to produce results (:issue:`33634`)
- Bug in :meth:`DataFrame.clip` not interpreting missing values as no threshold (:issue:`40420`)

Conversion
Expand Down Expand Up @@ -1228,4 +1230,4 @@ Other
Contributors
~~~~~~~~~~~~

.. contributors:: v1.2.4..v1.3.0|HEAD
.. contributors:: v1.2.5..v1.3.0|HEAD