Spec-Zone.ru › pandas 2

pandas.api.extensions.ExtensionArray.take

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

Извлечение элементов из массива.

Параметры:
indices:последовательность целых чисел или одномерный массив NumPy из целых чисел

Индексы для извлечения.

allow_fill:bool, по умолчанию False

Как обрабатывать отрицательные значения в indices.

  • False: отрицательные значения в indices указывают на позиционные индексы справа (по умолчанию). Это аналогично numpy.take().

  • True: отрицательные значения в indices указывают на пропущенные значения. Эти значения устанавливаются в fill_value. Любые другие отрицательные значения вызывают ValueError.

fill_value:любое значение, необязательно

Значение заполнения для индексов NA, когда allow_fill равно True. Это может быть None, в этом случае используется значение NA по умолчанию для типа, self.dtype.na_value.

Для многих ExtensionArray будут существовать два представления fill_value: пользовательское «упакованное» скалярное значение и низкоуровневое физическое значение NA. fill_value должно быть пользовательским вариантом, и реализация должна обрабатывать перевод этого значения в физическое представление для обработки извлечения, если это необходимо.

Возвращает:
ExtensionArray
Возможные исключения:
IndexError

Когда индексы выходят за пределы массива.

ValueError

Когда indices содержит отрицательные значения, отличные от -1 , и allow_fill равно True.

См. также

numpy.take

Извлечение элементов из массива по оси.

api.extensions.take

Извлечение элементов из массива.

Примечания

ExtensionArray.take вызывается Series.__getitem__, .loc, iloc, когда indices является последовательностью значений. Кроме того, он вызывается Series.reindex(), или любым другим методом, вызывающим перераспределение, со значением fill_value.

Примеры

Вот пример реализации, которая полагается на преобразование расширенного массива в тип object. Это использует вспомогательный метод 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)

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.api.extensions.ExtensionArray.take.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API