Spec-Zone.ru › pandas 1

pandas.api.extensions.ExtensionArray.take

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

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

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

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

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 должно быть пользовательским значением, а реализация должна обрабатывать перевод этого значения в физическое значение NA для обработки извлечения при необходимости.

Возвращает
ExtensionArray
Возбуждает
IndexError

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

ValueError

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

См. также

numpy.take

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

api.extensions.take

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

Примечания

ExtensionArray.take вызывается Series.__getitem__, .loc, iloc, когда 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)

© 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/1.5.0/reference/api/pandas.api.extensions.ExtensionArray.take.html

Spec-Zone.ru

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