Python 如何有效地获取列表中所有项在索引中的顺序位置

Python 如何有效地获取列表中所有项在索引中的顺序位置,python,pandas,numpy,Python,Pandas,Numpy,考虑唯一的pd.Indexidx和索引列表lst idx = pd.Index(list('abcdefg')) lst = list('bdf') 我们可以通过idx.get_loc('b')获得'b'的顺序位置 如何有效地获取lst中所有项目的顺序位置 idx.get_loc(lst)不起作用: TypeError: '['b', 'd', 'f']' is an invalid key 制作lst一个numpy数组并与广播进行比较。然后使用argmax识别位置 (idx.values[

考虑唯一的
pd.Index
idx
和索引列表
lst

idx = pd.Index(list('abcdefg'))
lst = list('bdf')
我们可以通过
idx.get_loc('b')
获得
'b'
的顺序位置

如何有效地获取
lst
中所有项目的顺序位置

idx.get_loc(lst)
不起作用:

TypeError: '['b', 'd', 'f']' is an invalid key

制作
lst
一个numpy数组并与广播进行比较。然后使用
argmax
识别位置

(idx.values[:, None] == np.array(lst)).argmax(0)

array([1, 3, 5])

制作
lst
一个numpy数组并与广播进行比较。然后使用
argmax
识别位置

(idx.values[:, None] == np.array(lst)).argmax(0)

array([1, 3, 5])
我们可以使用-

如果未排序
idx
我们需要使用
sorter
参数。

我们可以使用-


如果未对
idx
进行排序,我们需要对其使用
sorter
参数。

您承认索引是唯一值,对吗?你的索引的典型大小是多少?因为从您的示例来看,
[idx.get_loc(item)for item in lst]
是一种简单的方法,是的!我会更新你承认你的索引是唯一值,对吗?你的索引的典型大小是多少?因为从您的示例来看,
[idx.get_loc(item)for item in lst]
是一种简单的方法,是的!我会更新的
idx.searchsorted(lst)