pandas.Index.get_indexer_non_unique#

Index.get_indexer_non_unique(target)[源代码][源代码]#

计算给定当前索引的新索引的索引器和掩码。

索引器应随后用作 ndarray.take 的输入,以将当前数据与新索引对齐。

参数:
目标索引

一个包含用于计算索引器值的可迭代对象。

返回:
索引器np.ndarray[np.intp]

从0到n-1的整数,表示这些位置的索引与相应的目标值匹配。目标中缺失的值用-1标记。

missingnp.ndarray[np.intp]

一个索引器到未找到值的目标。这些对应于索引器数组中的-1。

参见

Index.get_indexer

计算给定当前索引的新索引的索引器和掩码。

Index.get_indexer_for

即使在非唯一情况下也返回一个索引器。

例子

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['b', 'b'])
(array([1, 3, 4, 1, 3, 4]), array([], dtype=int64))

在下面的例子中没有匹配的值。

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['q', 'r', 't'])
(array([-1, -1, -1]), array([0, 1, 2]))

因此,返回的 indexer 只包含等于 -1 的整数。这表明在这些位置上索引和 target 值之间没有匹配。返回值中的掩码 [0, 1, 2] 显示第一个、第二个和第三个元素缺失。

注意返回值是一个包含两个项的元组。在下面的例子中,第一项是 index 中的位置数组。第二项是一个掩码,显示第一个和第三个元素缺失。

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['f', 'b', 's'])
(array([-1,  1,  3,  4, -1]), array([0, 2]))