id marks year
1 18 2013
1 25 2012
3 16 2014
2 16 2013
1 19 2013
3 25 2013
2 18 2014
предположим, что теперь я группирую вышеописанное значение id командой python.
grouped = file.groupby(file.id)
Я хотел бы получить новый файл с только строкой в каждой группе с последним годом, который является самым высоким за весь год в группе.
Пожалуйста, дайте мне знать команду, которую я пытаюсь применить, но она имеет только логическое выражение. Я хочу всю строку с последним годом.
Я собрал это вместе, используя следующее: Python: Получение строки, которая имеет максимальное значение в группах с помощью groupby
Итак, в основном мы можем группировать столбец "id", а затем вызывать transform
в столбце "год" и создавать булевский индекс, где год соответствует максимальному значению года для каждого "id":
In [103]:
df[df.groupby(['id'])['year'].transform(max) == df['year']]
Out[103]:
id marks year
0 1 18 2013
2 3 16 2014
4 1 19 2013
6 2 18 2014