Ниже приведен пример большего словаряпанды - падение ряда на основе первого появления состояния
data ={'StudentId':['AAdams','AAdams','AAdams','AAdams','AAdams','AAdams',
'BBrooks','BBrooks','BBrooks','BBrooks','BBrooks',],
'year':[2015,2015,2015,2015,2015,2015,2015,2015,2015,2016,2016],
'month':[11,11,11,11,12,12,12,12,12,1,1],
'day':[15,16,21,23,1,2,15,18,30,5,7],
'BookLevel':[1.5,1.5,1.2,1.4,1.7,1.8,3.2,3.1,3.8,3.3,3.4]}
Я хочу бросить первое вхождение максимального значения с первого месяца каждого студента. Если есть второе появление, я хочу сохранить это событие
Я использовал groupby by StudentId, год и месяц и рассчитал максимальное значение BookLevel.
Затем я сделал еще dataframe вычислить значение максимального в месяц на одного студента и объединить эти два dataframes
тогда я был dataframe, который выглядит следующим образом:
StudentId year month BookLevel BookLevelMax
0 AAdams 2015 11 1.5 1.5
1 AAdams 2015 11 1.5 1.5
2 AAdams 2015 11 1.2 1.5
3 AAdams 2015 11 1.4 1.5
4 AAdams 2015 12 1.7 1.8
5 AAdams 2015 12 1.8 1.8
6 BBrooks 2015 12 3.2 3.8
7 BBrooks 2015 12 3.1 3.8
8 BBrooks 2015 12 3.8 3.8
9 BBrooks 2016 1 3.3 3.4
10 BBrooks 2016 1 3.4 3.4
Я хочу бросить первый появление 1.5 в месяц 11 для AAdams и 3.8 строки для BBrooks в месяце 12
Я могу использовать df.drop для удаления строк, где BookLevel Max равно BookLevel ... Но он уменьшает максимальное значение в каждом месяце для каждого студент и удаляет как первое, так и второе, если их два.
StudentId year month BookLevel BookLevelMax
2 AAdams 2015 11 1.2 1.5
3 AAdams 2015 11 1.4 1.5
4 AAdams 2015 12 1.7 1.8
6 BBrooks 2015 12 3.2 3.8
7 BBrooks 2015 12 3.1 3.8
9 BBrooks 2016 1 3.3 3.4
Я не могу найти способ отказаться только от первого появления и сделать это только в первый месяц. Чтобы быть конкретным, AAdams имеет максимум 1,5 в месяц 11. Это происходит в двух случаях. Я хотел бы сохранить один из строк, но отказаться от другого .... И я хотел бы сохранить строку с 1.8 под AAdams, так как это происходит во второй месяц (и другие случаи в других учениках через несколько месяцев после первого). Надеюсь, это имеет смысл.
Благодаря Cmari - мне удалось начать, но в дополнение к Jezrael. Сочетание ваших ответов на другие вопросы привело меня к окончательному решению –