pandas.api.extensions.ExtensionArray #

pandas.api.extensions。扩展数组[来源] #

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

pandas 会将此类的实例识别为具有自定义类型的正确数组,并且不会尝试将它们强制为对象。它们可以直接存储在 aDataFrame或内Series

笔记

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

  • _from_sequence

  • _from_factorized

  • __获取项目__

  • __长度__

  • __eq__

  • 数据类型

  • n 字节

  • 伊斯纳

  • 复制

  • _concat_same_type

提供了显示类型、(截断的)数据、长度和 dtype 的默认 repr。它可以通过重写来定制或替换:

  • __repr__ :ExtensionArray 的默认 repr。

  • _formatter :打印 Series 或 DataFrame 内的标量。

某些方法需要将 ExtensionArray 转换为 Python 对象的 ndarray self.astype(object),这可能会很昂贵。当性能是一个问题时,我们强烈建议覆盖以下方法:

  • 菲尔纳

  • _pad_or_backfill

  • 德罗纳

  • 独特的

  • 因式分解/因式分解的值

  • argsort、argmax、argmin / _values_for_argsort

  • 搜索排序

  • 地图

此类上实现的其余方法应该是高性能的,因为它们仅组成抽象方法。尽管如此,仍然可以使用更有效的实现,并且可以覆盖这些方法。

人们可以实现一些方法来处理数组累加或缩减。

  • _积累

  • _减少

人们可以实现一些方法来处理字符串解析,这些字符串将在诸如pandas.io.parsers.read_csv.

  • _from_sequence_of_strings _from_sequence_of_strings

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

ExtensionArray 仅限于一维。

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

如果实现 NumPy 的__array_ufunc__接口,pandas 期望

  1. 当输入NotImplemented中存在任何 Series 时,您可以通过返回来推迟。 Pandas 将提取数组并再次调用 ufunc。

  2. 您将_HANDLED_TYPES元组定义为类的属性。 Pandas 检查它以确定 ufunc 对于当前类型是否有效。

有关更多信息,请参阅NumPy 通用函数

默认情况下,ExtensionArrays 不可散列。不可变的子类可能会覆盖此行为。

例子

请参阅以下内容:

pandas-dev/pandas

属性

dtype

ExtensionDtype 的实例。

nbytes

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

ndim

扩展数组只允许是一维的。

shape

返回数组维度的元组。

方法

argsort(*[,升序,种类,na_position])

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

astype(dtype[, 复制])

使用“dtype”转换为 NumPy 数组或 ExtensionArray。

copy()

返回数组的副本。

dropna()

返回没有 NA 值的 ExtensionArray。

duplicated([保持])

返回表示重复值的布尔 ndarray。

factorize([use_na_sentinel])

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

fillna([值、方法、限制、副本])

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

equals(其他)

返回另一个数组是否与此数组等效。

insert(位置,项目)

在给定位置插入一个项目。

interpolate(*、方法、轴、索引、限制、...)

请参阅 DataFrame.interpolate.__doc__。

isin(数值)

给定值中集合包含的逐点比较。

isna()

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

ravel([命令])

返回此数组的展平视图。

repeat(重复[,轴])

重复 ExtensionArray 的元素。

searchsorted(值[,边,排序器])

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

shift([句点,填充值])

将值移动所需的数字。

take(索引,*[,允许填充,填充值])

从数组中获取元素。

tolist()

返回值的列表。

unique()

计算唯一值的 ExtensionArray。

view([数据类型])

返回数组的视图。

_accumulate(姓名,*[,跳过])

返回执行累加操作的 ExtensionArray。

_concat_same_type(to_concat)

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

_explode()

将类似列表的每个元素转换为一行。

_formatter([盒装])

标量值的格式化函数。

_from_factorized(值,原始值)

因式分解后重建 ExtensionArray。

_from_sequence(标量,*[,数据类型,复制])

从标量序列构造一个新的 ExtensionArray。

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

从字符串序列构造一个新的 ExtensionArray。

_hash_pandas_object(*,编码,hash_key,...)

hash_pandas_object 的挂钩。

_pad_or_backfill(*, 方法[, 限制, ...])

填充或回填值,由 Series/DataFrame ffill 和 bfill 使用。

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

返回执行归约运算的标量结果。

_values_for_argsort()

返回值用于排序。

_values_for_factorize()

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