pandas.api.extensions.ExtensionArray.take#
- ExtensionArray.take(индексы, *, allow_fill=False, fill_value=None)[источник]#
Извлечь элементы из массива.
- Параметры:
- индексыпоследовательность int или одномерный np.ndarray из int
Индексы для взятия.
- allow_fillbool, по умолчанию False
Как обрабатывать отрицательные значения в индексы.
False: отрицательные значения в индексы указывают позиционные индексы справа (по умолчанию). Это похоже на
numpy.take().True: отрицательные значения в индексы указывать пропущенные значения. Эти значения установлены в fill_value. Любые другие отрицательные значения вызывают
ValueError.
- fill_valueany, optional
Значение заполнения для использования при NA-индексах, когда allow_fill истинно. Это может быть
None, в этом случае значение NA по умолчанию для типа,self.dtype.na_value, используется.Для многих ExtensionArrays будет два представления fill_value: пользовательский «упакованный» скаляр и низкоуровневое физическое значение NA. fill_value должна быть версией, ориентированной на пользователя, а реализация должна обрабатывать преобразование этого в физическую версию для обработки взятия, если это необходимо.
- Возвращает:
- ExtensionArray
- Вызывает:
- IndexError
Когда индексы выходят за границы массива.
- ValueError
Когда индексы содержит отрицательные значения, кроме
-1и allow_fill равно True.
Смотрите также
numpy.takeВзять элементы из массива вдоль оси.
api.extensions.takeИзвлечь элементы из массива.
Примечания
ExtensionArray.take вызывается
Series.__getitem__,.loc,iloc, когда индексы является последовательностью значений. Кроме того, он вызывается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)