pandas.arrays.PandasArray.take
-
PandasArray.take(indices, allow_fill=False, fill_value=None)[source] -
Получение элементов из массива.
Параметры: -
indices : sequence of integers -
Индексы для извлечения.
-
allow_fill : bool, default False -
Как обрабатывать отрицательные значения в
indices.- False: отрицательные значения в
indicesуказывают на позиционные индексы справа (по умолчанию). Это аналогичноnumpy.take(). - True: отрицательные значения в
indicesуказывают на пропущенные значения. Эти значения устанавливаются вfill_value. Любые другие отрицательные значения вызываютValueError.
- False: отрицательные значения в
-
fill_value : any, optional -
Значение заполнения для использования для индексов NA, когда
allow_fillравно True. Оно может бытьNone, в таком случае используется значение по умолчанию NA для типа,self.dtype.na_value.Для многих ExtensionArrays существует два представления
fill_value: пользовательский «упакованный» скаляр и низкоуровневое физическое значение NA.fill_valueдолжно быть пользовательской версией, и реализация должна обрабатывать преобразование этого в физическую версию для обработки take, если необходимо.
Возвращает: - ExtensionArray
Возможные исключения: - IndexError
-
Когда индексы выходят за пределы массива.
- ValueError
-
Когда
indicesсодержит отрицательные значения, отличные от-1иallow_fillравно True.
См. также
numpy.take,pandas.api.extensions.takeПримечания
ExtensionArray.take вызывается
Series.__getitem__,.loc,iloc, когдаindicesявляется последовательностью значений. Кроме того, он вызываетсяSeries.reindex(), или любым другим методом, вызывающим перераспределение, соfill_value.Примеры
Вот пример реализации, которая полагается на преобразование расширенного массива к объектному типу. Для этого используется вспомогательный метод
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–2012, 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/0.24.2/reference/api/pandas.arrays.PandasArray.take.html