代码之家  ›  专栏  ›  技术社区  ›  Michael Ekstrand

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

  •  1
  • Michael Ekstrand  · 技术社区  · 7 年前

    我想用熊猫 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 ,但该函数没有矢量化。

    熊猫似乎是在遮掩下这样做的,否则 .loc 查找工作?–但是我无法从python代码中找到一个公开的方法来执行此操作。如果它以某种方式暴露在cython中,那是可以接受的;我的用例是准备数组传递给cython例程以进行优化计算。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Michael Ekstrand    7 年前

    这个 Index.get_indexer 方法是关键。pandas似乎将基于位置的选择器称为“indexers”; get_indexer() 方法获取给定值数组的索引器。

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