REF: Make PeriodArray an ExtensionArray by TomAugspurger · Pull Request #22862 · pandas-dev/pandas (original) (raw)

Expand Up

@@ -145,33 +145,41 @@ Current Behavior:

.. _whatsnew_0240.enhancements.interval:

Storing Interval Data in Series and DataFrame

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Storing Interval and Period Data in Series and DataFrame

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Interval data may now be stored in a ``Series`` or ``DataFrame``, in addition to an

:class:`IntervalIndex` like previously (:issue:`19453`).

Interval and Period data may now be stored in a ``Series`` or ``DataFrame``, in addition to an

:class:`IntervalIndex` and :class:`PeriodIndex` like previously (:issue:`19453`, :issue:`22862`).

.. ipython:: python

ser = pd.Series(pd.interval_range(0, 5))

ser

ser.dtype

Previously, these would be cast to a NumPy array of ``Interval`` objects. In general,

this should result in better performance when storing an array of intervals in

a :class:`Series`.

And for periods:

.. ipython:: python

pser = pd.Series(pd.date_range("2000", freq="D", periods=5))

pser

pser.dtype

Previously, these would be cast to a NumPy array with object dtype. In general,

this should result in better performance when storing an array of intervals or periods

in a :class:`Series` or column of a :class:`DataFrame`.

Note that the ``.values`` of a ``Series`` containing intervals is no longer a NumPy

Note that the ``.values`` of a ``Series`` containing one of these types is no longer a NumPy

array, but rather an ``ExtensionArray``:

.. ipython:: python

ser.values

pser.values

This is the same behavior as ``Series.values`` for categorical data. See

:ref:`whatsnew_0240.api_breaking.interval_values` for more.

.. _whatsnew_0240.enhancements.other:

Other Enhancements

Expand Down Expand Up

@@ -360,7 +368,7 @@ New Behavior:

This mirrors ``CategoricalIndex.values``, which returns a ``Categorical``.

For situations where you need an ``ndarray`` of ``Interval`` objects, use

:meth:`numpy.asarray` or ``idx.astype(object)``.

:meth:`numpy.asarray`.

.. ipython:: python

Expand Down Expand Up

@@ -810,6 +818,7 @@ update the ``ExtensionDtype._metadata`` tuple to match the signature of your

- Updated the ``.type`` attribute for ``PeriodDtype``, ``DatetimeTZDtype``, and ``IntervalDtype`` to be instances of the dtype (``Period``, ``Timestamp``, and ``Interval`` respectively) (:issue:`22938`)

- :func:`ExtensionArray.isna` is allowed to return an ``ExtensionArray`` (:issue:`22325`).

- Support for reduction operations such as ``sum``, ``mean`` via opt-in base class method override (:issue:`22762`)

- :meth:`Series.unstack` no longer converts extension arrays to object-dtype ndarrays. The output ``DataFrame`` will now have the same dtype as the input. This changes behavior for Categorical and Sparse data (:issue:`23077`).

.. _whatsnew_0240.api.incompatibilities:

Expand Down