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