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