A custom data type, to be paired with an ExtensionArray.
See also
extensions.register_extension_dtypeRegister an ExtensionType with pandas as class decorator.
extensions.ExtensionArrayAbstract base class for custom 1-D array types.
Notes
The interface includes the following abstract methods that must be implemented by subclasses:
type
name
construct_array_type
The following attributes and methods influence the behavior of the dtype in pandas operations
_is_numeric
_is_boolean
_get_common_dtype
The na_value class attribute can be used to set the default NA value for this type. numpy.nan is used by default.
ExtensionDtypes are required to be hashable. The base class provides a default implementation, which relies on the _metadata class attribute. _metadata should be a tuple containing the strings that define your data type. For example, with PeriodDtype that’s the freq attribute.
If you have a parametrized dtype you should set the ``_metadata`` class property.
Ideally, the attributes in _metadata will match the parameters to your ExtensionDtype.__init__ (if any). If any of the attributes in _metadata don’t implement the standard __eq__ or __hash__, the default implementations here will not work.
Examples
For interaction with Apache Arrow (pyarrow), a __from_arrow__ method can be implemented: this method receives a pyarrow Array or ChunkedArray as only argument and is expected to return the appropriate pandas ExtensionArray for this dtype and the passed values:
>>> import pyarrow
>>> from pandas.api.extensions import ExtensionArray
>>> class ExtensionDtype:
... def __from_arrow__(
... self,
... array: pyarrow.Array | pyarrow.ChunkedArray
... ) -> ExtensionArray:
... ...
This class does not inherit from ‘abc.ABCMeta’ for performance reasons. Methods and properties required by the interface raise pandas.errors.AbstractMethodError and no register method is provided for registering virtual subclasses.
Attributes
| The Index subclass to return from Index.__new__ when this dtype is encountered. |
| A character code (one of 'biufcmMOSUV'), default 'O' |
| Default NA value to use for this type. |
| A string identifying the data type. |
| Ordered list of field names, or None if there are no fields. |
| The scalar type for the array, e.g. |
Methods
| Return the array type associated with this dtype. |
| Construct this type from a string. |
| Construct an ExtensionArray of this dtype with the given shape. |
| Check if we match 'dtype'. |
© 2008–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.api.extensions.ExtensionDtype.html