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 期望 当输入NotImplemented中存在任何 Series 时,您可以通过返回来推迟。 Pandas 将提取数组并再次调用 ufunc。 您将_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() 返回适合因式分解的数组和缺失值。