Spec-Zone.ru › pandas 2

pandas.api.indexers.check_array_indexer

pandas.api.indexers.check_array_indexer(array, indexer)[source]

Проверка, является ли indexer допустимым индексатором массива array.

Для булевой маски проверяется, что у array и indexer одинаковая длина. Проверяется тип данных, и если это целочисленный или булевый ExtensionArray, проверяется наличие пропущенных значений, и он преобразуется в соответствующий массив NumPy. Другие типы данных приведут к ошибке.

Индексаторы, не являющиеся массивами (целочисленные, срезы, Ellipsis, кортежи и т.д.), передаются как есть.

Параметры:
array:array-like

Массив, который индексируется (используется только для длины).

indexer:array-like или list-like

Список-подобный объект, используемый для индексации. Список-подобный вход, который ещё не является массивом NumPy или ExtensionArray, преобразуется в него. Другие типы ввода передаются как есть.

Возвращает:
numpy.ndarray

Проверенный индексатор в виде массива NumPy, который можно использовать для индексации.

Исключения:
IndexError

Когда длины не совпадают.

ValueError

Когда indexer нельзя преобразовать в массив NumPy для индексации (например, присутствие пропущенных значений).

См. также

api.types.is_bool_dtype

Проверка, является ли key булевого типа.

Примеры

При проверке булевой маски возвращается булевый массив NumPy, когда все аргументы корректны.

>>> mask = pd.array([True, False])
>>> arr = pd.array([1, 2])
>>> pd.api.indexers.check_array_indexer(arr, mask)
array([ True, False])

Возникает IndexError, когда длины не совпадают.

>>> mask = pd.array([True, False, True])
>>> pd.api.indexers.check_array_indexer(arr, mask)
Traceback (most recent call last):
...
IndexError: Boolean index has wrong length: 3 instead of 2.

Значения NA в булевом массиве обрабатываются как False.

>>> mask = pd.array([True, pd.NA])
>>> pd.api.indexers.check_array_indexer(arr, mask)
array([ True, False])

Булева маска NumPy будет пропущена (если длина верна):

>>> mask = np.array([True, False])
>>> pd.api.indexers.check_array_indexer(arr, mask)
array([ True, False])

Аналогично для целочисленных индексаторов, целочисленный массив NumPy возвращается, когда это допустимый индексатор, в противном случае возникает ошибка (для целочисленных индексаторов не требуется соответствие длины):

>>> indexer = pd.array([0, 2], dtype="Int64")
>>> arr = pd.array([1, 2, 3])
>>> pd.api.indexers.check_array_indexer(arr, indexer)
array([0, 2])
>>> indexer = pd.array([0, pd.NA], dtype="Int64")
>>> pd.api.indexers.check_array_indexer(arr, indexer)
Traceback (most recent call last):
...
ValueError: Cannot index with an integer indexer containing NA values

Для типов данных, не являющихся целочисленными/булевыми, возникает соответствующая ошибка:

>>> indexer = np.array([0., 2.], dtype="float64")
>>> pd.api.indexers.check_array_indexer(arr, indexer)
Traceback (most recent call last):
...
IndexError: arrays used as indices must be of integer or boolean type

© 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.indexers.check_array_indexer.html

Spec-Zone.ru

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