當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.api.indexers.check_array_indexer用法及代碼示例


用法:

pandas.api.indexers.check_array_indexer(array, indexer)

檢查 indexer 是否是 array 的有效數組索引器。

對於布爾掩碼,arrayindexer 被檢查為具有相同的長度。驗證 dtype,如果它是整數或布爾 ExtensionArray,則檢查是否存在缺失值,並將其轉換為適當的 numpy 數組。其他 dtypes 將引發錯誤。

非數組索引器(整數、切片、省略號、元組、..)按原樣傳遞。

參數

arrayarray-like

被索引的數組(僅用於長度)。

indexerarray-like 或 list-like

用於索引的array-like。 List-like 還不是 numpy 數組或 ExtensionArray 的輸入被轉換為一個。其他輸入類型按原樣傳遞。

返回

numpy.ndarray

經過驗證的索引器作為可用於索引的 numpy 數組。

拋出

索引錯誤

當長度不匹配時。

ValueError

indexer 無法轉換為 numpy ndarray 以進行索引時(例如,存在缺失值)。

例子

檢查布爾掩碼時,當參數全部有效時返回布爾 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

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.api.indexers.check_array_indexer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。