Получение индексов строк первого появления списка значений, соответствующих столбцу - PullRequest
1 голос
/ 25 февраля 2020

У меня есть набор значений в виде массива numpy. Я хочу найти индексы строк, в которых значение в массиве numpy впервые появляется

data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 'year': [2012, 2012, 2013, 2014, 2014], 'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data)
mid = np.array([2012,2013])

Я хочу найти индексы строк первых появлений значений 2012 и 2013 в столбце года. Мой ожидаемый ответ должен быть

[0,2]

На самом деле со мной будут одинаковые идентификаторы строк любого индекса внешнего вида. То есть я в порядке с ответом

[1,2]

также

1 Ответ

1 голос
/ 25 февраля 2020

Если есть индекс по умолчанию, он такой же, как позиции, и все значения сортируются, используя Series.searchsorted:

idx = df['year'].searchsorted(mid).tolist()
print (idx)
[0, 2]

Общее решение с Series.isin в boolean indexing и DataFrame.drop_duplicates для первых значений, последний преобразованный индекс в список:

idx = df[df['year'].isin(mid)].drop_duplicates('year').index.tolist()
print (idx)
[0, 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...