将基于标签的索引(loc)转换为基于位置的索引(iloc)

时间:2019-11-19 14:58:41

标签: python pandas

给出我的数据:

import numpy as np
import pandas as pd

data = pd.DataFrame(
    {
        'x': [11, 12, 13],
        'y': [21, 22, 23]
    },
    index=['a', 'b', 'c']
)

我想找到与标签['a', 'c']相对应的位置索引。通过目视检查,我知道它们是[0, 2],但这仅在玩具示例中是可能的。

“蛮力”方法是

my_lab = ['a', 'c']
my_pos = (data.index == my_idx).to_numpy().nonzero()[0]

是否有更好/更快/更优雅的方式来做到这一点?还是蛮力方法是唯一的方法?

1 个答案:

答案 0 :(得分:1)

使用Index.get_indexer

my_pos = data.index.get_indexer(my_lab)
print (my_pos)
[0 2]

Index.searchsorted

my_pos = data.index.searchsorted(my_lab)
print (my_pos)
[0 2]