从python中的groupby对象中选择一个特定的行

Shi*_*ash 1 python group-by pandas

id    marks  year 
1     18      2013
1     25      2012
3     16      2014
2     16      2013
1     19      2013
3     25      2013
2     18      2014
Run Code Online (Sandbox Code Playgroud)

假设现在我通过python命令将上面的id分组.
grouped = file.groupby(file.id)

我想获得一个新文件,每个组中只有一行,最近一年是该组中一年中最高的一年.

请告诉我这个命令,我正在尝试使用apply但它只给出了布尔表达式.我想要最新一年的整行.

EdC*_*ica 6

我用这个拼凑了这个:Python:使用groupby获取组中具有最大值的Row

所以基本上我们可以通过'id'列进行分组,然后调用transform'year'列并创建一个布尔索引,其中年份匹配每个'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
Run Code Online (Sandbox Code Playgroud)