class pandas.api.extensions.ExtensionDtype[source]

A custom data type, to be paired with an ExtensionArray.

New in version 0.23.0.


The interface includes the following abstract methods that must be implemented by subclasses:

  • type
  • name
  • construct_from_string

The following attributes influence the behavior of the dtype in pandas operations

  • _is_numeric
  • _is_boolean

Optionally one can override construct_array_type for construction with the name of this dtype via the Registry. See pandas.api.extensions.register_extension_dtype().

  • construct_array_type

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.

Changed in version 0.24.0: Added _metadata, __hash__, and changed the default definition of __eq__.

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.


kind A character code (one of ‘biufcmMOSUV’), default ‘O’
name A string identifying the data type.
names Ordered list of field names, or None if there are no fields.
type The scalar type for the array, e.g.


construct_array_type() Return the array type associated with this dtype
construct_from_string(string) Attempt to construct this type from a string.
is_dtype(dtype) Check if we match ‘dtype’.
Scroll To Top