pandas.api.extensions.ExtensionArray#

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

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

Pandas会将此类的实例识别为具有自定义类型的适当数组,并且不会试图将它们强制为对象。它们可以直接存储在 DataFrameSeries

注意事项

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

  • _from_sequence

  • _from_factorized

  • __getitem__

  • __len__

  • __eq__

  • 数据类型

  • N字节

  • ISNA

  • 拿走

  • 复制

  • _concat_same_type

提供了显示类型、(截断的)数据、长度和数据类型的默认REPR。它可以通过以下方式进行自定义或替换:

  • __repr__ :Extension数组的默认epr。

  • _Formatter:打印Series或DataFrame中的标量。

某些方法需要将Extension数组强制转换为一组包含 self.astype(object) ,这可能是昂贵的。如果性能令人担忧,我们强烈建议您优先使用以下方法:

  • 填充物

  • Dropna

  • 独一无二的

  • 因数分解/_Values_for_Factorize

  • Argsort、argmax、argmin/_VALUES_FOR_ARSORT

  • 搜索排序

在这个类上实现的其余方法应该是可执行的,因为它们只组成抽象方法。尽管如此,可能会有更有效的实现,并且这些方法可以被覆盖。

可以实现处理数组缩减的方法。

  • _reduce

可以实现一些方法来处理从字符串进行的解析,这些字符串将用于 pandas.io.parsers.read_csv

  • _from_sequence_of_strings

出于性能原因,此类不是从‘abc.ABCMeta’继承的。接口引发所需的方法和属性 pandas.errors.AbstractMethodError 而且没有 register 提供了用于注册虚拟子类的方法。

ExtensionArray限制为1维。

它们可以由无、一个或多个NumPy数组支持。例如, pandas.Categorical 是由两个数组支持的扩展数组,一个用于代码,一个用于类别。IPv6地址数组可以由具有两个字段的NumPy结构化数组支持,一个用于低64位,一个用于高64位。或者,它们可能由某种其他存储类型支持,如Python列表。Pandas对数据的存储方式没有任何假设,只是可以将其转换为NumPy数组。Extension数组接口不会对此数据的存储方式强加任何规则。但是,目前支持数据不能存储在称为 .values._values 以确保与Pandas内部完全兼容。但其他名字,如 .data._data._items ..可以自由使用。

如果实现NumPy的 __array_ufunc__ 界面,Pandas期待着

  1. 你通过返回来推迟 NotImplemented 当有任何系列出现在 inputs 。Pandas将提取数组并再次调用ufunc。

  2. 您可以定义一个 _HANDLED_TYPES 元组作为类的属性。Pandas会检查这一点,以确定ufunc对于当前的类型是否有效。

看见 NumPy泛函 想要更多。

默认情况下,ExtensionArray不可哈希。不变的子类可能会覆盖此行为。

属性

dtype 

“ExtensionDtype”的实例。

nbytes 

在内存中存储此对象所需的字节数。

ndim 

扩展数组仅允许为一维。

shape 

返回数组维度的元组。

方法:

argsort \([ascending, kind, na_position] )

返回对此数组进行排序的索引。

astype \(dtype[, copy] )

强制转换为具有‘dtype’的NumPy数组或Extension数组。

copy \()

返回数组的副本。

dropna \()

返回不带NA值的Extension数组。

factorize \([na_sentinel] )

将扩展数组编码为枚举类型。

fillna \([value, method, limit] )

使用指定的方法填充NA/NaN值。

equals \(其他)

如果另一个数组与此数组等价,则返回。

insert \(位置,项目)

在给定位置插入项目。

isin \(值)

对给定值中的集合包容进行逐点比较。

isna \()

指示是否缺少每个值的一维数组。

ravel \([order] )

在此数组上返回平面化视图。

repeat \(重复[, axis] )

重复Extension数组的元素。

searchsorted \(值[, side, sorter] )

查找应插入元素以维持顺序的索引。

shift \([periods, fill_value] )

按所需数量移动值。

take \(索引,*[, allow_fill, fill_value] )

从数组中获取元素。

tolist \()

返回值列表。

unique \()

计算唯一值的Extension数组。

view \([dtype] )

返回阵列上的视图。

_concat_same_type \(至_连接)

连接此数据类型的多个数组。

_formatter \([boxed] )

标量值的格式化函数。

_from_factorized \(值,原始)

分解后重新构造扩展数组。

_from_sequence \(标量,*[, dtype, copy] )

从标量序列构造一个新的Extension数组。

_from_sequence_of_strings \(字符串,*[, ...] )

从字符串序列构造一个新的Extension数组。

_reduce \(名称,*[, skipna] )

返回执行约简操作的标量结果。

_values_for_argsort \()

返回值以进行排序。

_values_for_factorize \()

返回适合因式分解的数组和缺失值。