pandas.api.indexers.check_array_indexer#

pandas.api.indexers.check_array_indexer(array, indexer)[源代码]#

检查是否 indexer 是的有效数组索引器 array

对于布尔掩码, arrayindexer 被检查为具有相同的长度。验证数据类型,如果它是整数或布尔扩展数组,则检查是否存在缺失值,并将其转换为适当的数字数组。其他数据类型将引发错误。

非数组索引器(整数、切片、省略号、元组、..)是按原样通过的。

1.0.0 新版功能.

参数
array类似阵列的

要编制索引的数组(仅用于长度)。

indexer数组形式或列表形式

类似于数组的数组用于索引。将尚不是NumPy数组或Extension数组的类似列表的输入转换为Numy数组或ExtensionArray。其他输入类型按原样传递。

退货
numpy.ndarray

经过验证的索引器,它是可用于索引的Numy数组。

加薪
IndexError

当长度不匹配的时候。

ValueError

什么时候 indexer 无法转换为数字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