Функция, подобная index.get_loc, но для нескольких значений

#python #pandas #dataframe #indexing

#питон #панды #фрейм данных #индексирование

Вопрос:

У меня есть следующий фрейм данных:

df = pd.DataFrame({'color': ['Yellow', 'Green', 'Red', 'Orange'], 'weight': [0.5, 4, 1, 10]}, index = ['Banana','Melon','Apple','Pumpkin'])

который выглядит так:

 Banana  Yellow     0.5
Melon    Green     4.0
Apple      Red     1.0
Pumpkin  Orange    10.0
 

То, что я пытаюсь сделать, это получить доступ к целочисленным местоположениям подмножества «Банан», «Дыня», «Яблоко», «Тыква». Я знаю, что pandas.index.get_loc — это способ сделать это для одного элемента индекса. Например: df.index.get_loc('Apple') возвращает 2. Однако я хотел бы сделать это для нескольких элементов одновременно. Я попробовал, среди прочего, df.index.get_loc(‘Apple’,’Pumpkin’), надеясь получить список [2,3], но это выдало следующую ошибку: ValueError: Invalid fill method. Expecting pad (ffill), backfill (bfill) or nearest. Got pumpkin

Есть ли функция, которая позволит мне получить несколько целых местоположений одновременно?

Ответ №1:

Попробуйте, с get_indexer помощью которого принять список, подобный вводу

 df.index.get_indexer(['Apple','Pumpkin'])
Out[104]: array([2, 3], dtype=int32)
 

Комментарии:

1. Это именно то, что я искал! Спасибо!