pandas.api.indexers.check_array_indexer # pandas.api.indexers。check_array_indexer (数组,索引器) [来源] # 检查索引器是否是array的有效数组索引器。 对于布尔掩码,检查数组和索引器是否具有相同的长度。验证 dtype,如果它是整数或布尔型 ExtensionArray,则检查是否存在缺失值,并将其转换为适当的 numpy 数组。其他数据类型将引发错误。 非数组索引器(整数、切片、省略号、元组等)按原样传递。 参数: 数组类似数组正在索引的数组(仅用于长度)。 索引器类似数组或类似列表用于索引的类似数组。还不是 numpy 数组或 ExtensionArray 的类似列表的输入将转换为数组。其他输入类型按原样传递。 返回: numpy.ndarray已验证的索引器作为可用于索引的 numpy 数组。 加薪: 索引错误当长度不匹配时。 值错误当索引器无法转换为 numpy ndarray 进行索引时(例如存在缺失值)。 也可以看看 api.types.is_bool_dtype检查key是否为布尔数据类型。 例子 检查布尔掩码时,如果参数全部有效,则返回布尔 ndarray。 >>> 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]) 类似地,对于整数索引器,当它是有效索引器时,返回整数 ndarray,否则错误(对于整数索引器,不需要匹配长度): >>> 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