pandas.api.extensions.ExtensionDtype#

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

一个自定义数据类型,与 ExtensionArray 配对。

参见

extensions.register_extension_dtype

使用 pandas 作为类装饰器注册一个 ExtensionType。

extensions.ExtensionArray

自定义1-D数组类型的抽象基类。

备注

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

  • 类型

  • 名字

  • construct_array_type

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

  • _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__,这里的默认实现将无法工作。

例子

为了与 Apache Arrow (pyarrow) 交互,可以实现一个 __from_arrow__ 方法:此方法接收一个 pyarrow 数组或 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 方法用于注册虚拟子类。

属性

index_class

当遇到此数据类型时,从 Index.__new__ 返回的 Index 子类。

kind

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

na_value

此类型使用的默认 NA 值。

name

一个标识数据类型的字符串。

名称

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

类型

数组的标量类型,例如 int

方法

construct_array_type()

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

construct_from_string(字符串)

从字符串构造此类型。

empty(shape)

使用给定的形状构造此数据类型的 ExtensionArray。

is_dtype(dtype)

检查是否匹配 'dtype'。