Следующий код находит для каждого id
самый ранний индекс, при котором acc
превышает threshold
:
threshold = 0.9
df[df['acc'] >= threshold]\
.sort_index()\
.drop_duplicates(subset='id', keep='first')\
.index
Не уверен, в чем разница в производительности между этими двумя подходами, но другой способ достичь тех же результатов:
df.groupby('id').apply(lambda x: x[x['acc'] >= threshold].index.min()))
Сортировка по acc
в строке 3, мы можем найти для каждого id
индекс, где acc
сначала пересекает threshold
:
threshold = 0.9
df[df['acc'] >= threshold]\
.sort_values(by='acc', ascending=True)\
.drop_duplicates(subset='id', keep='first')\
.index