Как я могу преобразовать ряд ключей в местоположения с индексом Панд? - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь использовать 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, но эта функция не векторизована.

Панды, кажется, делают это под капотом - как еще .loc поиск будет работать? - но я не могу найти открытый метод для этого из кода Python. Если это как-то выставлено в Cython, это будет приемлемо; Мой вариант использования готовит массивы для передачи подпрограммам Cython для оптимизированных вычислений.

1 Ответ

0 голосов
/ 03 июля 2018

Ключ * 100 * *Index.get_indexer. Панды, похоже, называют позиционные селекторы «индексаторами»; метод get_indexer() получает такой индексатор, учитывая массив значений.

>>>> index.get_indexer(pd.Series(['b', 'c', 'a']))
array([1, 2, 0], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...