Spec-Zone.ru › pandas 1

pandas.api.indexers.check_array_indexer

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

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

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

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

Добавлен в версии 1.0.0.

Parameters
array:array-like

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

indexer:array-like или list-like

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

Returns
numpy.ndarray

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

Raises
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/1.5.0/reference/api/pandas.api.indexers.check_array_indexer.html

Spec-Zone.ru

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