当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.api.extensions.ExtensionArray.take用法及代码示例


用法:

ExtensionArray.take(indices, *, allow_fill=False, fill_value=None)

从数组中获取元素。

参数

indicesint 序列或 int 的一维 np.ndarray

要采取的指标。

allow_fill布尔值,默认为 False

如何处理 indices 中的负值。

  • False:indices 中的负值表示从右侧开始的位置索引(默认值)。这类似于 numpy.take()

  • True:indices 中的负值表示缺失值。这些值设置为 fill_value 。任何其他负值都会引发 ValueError

fill_value任何,可选

allow_fill 为 True 时用于 NA-indices 的填充值。这可能是 None ,在这种情况下,使用类型的默认 NA 值 self.dtype.na_value

对于许多 ExtensionArrays,将有两种表示 fill_value :一个 user-facing “boxed” 标量和一个低级物理 NA 值。 fill_value 应该是 user-facing 版本,并且实现应该处理将其转换为物理版本以便在必要时处理镜头。

返回

扩展数组

抛出

索引错误

当索引超出数组的范围时。

ValueError

indices 包含除-1 以外的负值且allow_fill 为True 时。

注意

ExtensionArray.take 由 Series.__getitem__.lociloc 调用,当 indices 是一系列值时。此外,它由 Series.reindex() 或任何其他导致重新对齐的方法调用,带有 fill_value

例子

这是一个示例实现,它依赖于将扩展数组转换为对象 dtype。这使用了辅助方法 pandas.api.extensions.take()

def take(self, indices, allow_fill=False, fill_value=None):
    from pandas.core.algorithms import take

    # If the ExtensionArray is backed by an ndarray, then
    # just pass that here instead of coercing to object.
    data = self.astype(object)

    if allow_fill and fill_value is None:
        fill_value = self.dtype.na_value

    # fill value should always be translated from the scalar
    # type for the array, to the physical storage type for
    # the data, before passing to take.

    result = take(data, indices, fill_value=fill_value,
                  allow_fill=allow_fill)
    return self._from_sequence(result, dtype=self.dtype)

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.api.extensions.ExtensionArray.take。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。