pandas.api.extensions.ExtensionDtype#

class pandas.api.extensions.ExtensionDtype[源代码]#

自定义数据类型,用于与 ExtensionArray 匹配。

参见

extensions.register_extension_dtype

将 ExtensionType 作为类装饰器注册到 pandas。

extensions.ExtensionArray

自定义一维数组类型的抽象基类。

Notes

该接口包含以下必须由子类实现的抽象方法:

  • 类型

  • 名称

  • construct_array_type

以下属性和方法会影响 dtype 在 pandas 操作中的行为

  • _is_numeric

  • _is_boolean

  • _get_common_dtype

na_value 类属性可用于设置此类型的默认 NA 值。默认使用 numpy.nan

ExtensionDtypes 需要是可哈希的。基类提供了默认实现,该实现依赖于 _metadata 类属性。_metadata 应该是一个包含定义数据类型的字符串的元组。例如,对于 PeriodDtype,那就是 freq 属性。

如果您有一个参数化的 dtype,应该设置 ``_metadata`` 类属性

理想情况下,_metadata 中的属性将与您的 ExtensionDtype.__init__ 的参数匹配(如果有)。如果 _metadata 中的任何属性没有实现标准的 __eq____hash__,则这里的默认实现将不起作用。

Examples

为了与 Apache Arrow (pyarrow) 进行交互,可以实现一个 __from_arrow__ 方法:此方法接收 pyarrow Array 或 ChunkedArray 作为唯一参数,并应返回适合该 dtype 和传入值的 pandas ExtensionArray:

>>> import pyarrow
>>> from pandas.api.extensions import ExtensionArray
>>> class ExtensionDtype:
...     def __from_arrow__(
...         self,
...         array: pyarrow.Array | pyarrow.ChunkedArray
...     ) -> ExtensionArray:
...         ...

此类不继承自 ‘abc.ABCMeta’ 出于性能原因。接口所需的方法和属性会引发 pandas.errors.AbstractMethodError,并且不提供 register 方法来注册虚拟子类。

Attributes

index_class

遇到此 dtype 时从 Index.__new__ 返回的 Index 子类。

kind

一个字符码('biufcmMOSUV' 中的一个),默认为 'O'

na_value

此类型的默认 NA 值。

name

标识数据类型的字符串。

names

字段名称的有序列表,如果没有字段则为 None。

type

数组的标量类型,例如 int

Methods

construct_array_type ()

返回与此 dtype 关联的数组类型。

construct_from_string (string)

从字符串构造此类型。

empty (shape)

构造一个具有给定形状的此 dtype 的 ExtensionArray。

is_dtype (dtype)

检查是否匹配 'dtype'。