如何将一系列键转换为具有Pandas索引的位置?

时间:2018-07-02 20:45:13

标签: pandas

我正在尝试手动使用Pandas Index来促进键值和位置之间的双向查找。

假设我有一个索引:

index = pd.Index(['a', 'b', 'c', 'd'])

如果我想将头寸转换为索引,那很简单:

index[pd.Series([0,3,2,0,0,1])

收益'a', 'd', 'c', 'a', 'a', 'b'

但是,我无法找到一种方法来批量完成另一个方向:给定一系列键,如何确定它们的位置?

index.???[pd.Series(['b', 'c', 'a'])]

我想要1, 2, 0。我可以使用get_loc对单个元素执行此操作,但是该函数未矢量化。

Pandas似乎是在做这件事– .loc查找还有什么用? -但我找不到从Python代码执行此操作的公开方法。如果以某种方式暴露在Cython中,那将是可以接受的。我的用例是准备将数组传递给Cython例程以优化计算。

1 个答案:

答案 0 :(得分:1)

Index.get_indexer方法是关键。熊猫似乎将基于位置的选择器称为“索引器”。给定一个值数组,get_indexer()方法将获得这样的索引器。

>>>> index.get_indexer(pd.Series(['b', 'c', 'a']))
array([1, 2, 0], dtype=int64)