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)