如何使用pandas删除除了与某个值对应的最大行之外的所有行?

时间:2017-10-11 00:15:44

标签: python pandas

我有一个包含

等行的表格
df = pandas.DataFrame([[2001, "Jack", 77], [2005, "Jack", 44], [2001, "Jill", 93]],columns=['Year','Name','Value'])

    Year    Name    Value
0   2001    Jack    77
1   2005    Jack    44
2   2001    Jill    93

对于每个唯一Name,我希望保留具有最大Year值的行。在上面的例子中,我想得到表

    Year    Name    Value
0   2005    Jack    44
1   2001    Jill    93

这可以用简单的方式完成吗?

3 个答案:

答案 0 :(得分:3)

df.drop_duplicates(subset = 'Name', keep = 'last')
    Year    Name    Value
1   2005    Jack    44
2   2001    Jill    93

编写一个编辑过的版本就像@piRSquared一样。

df.sort_values('Year').drop_duplicates(subset = 'Name', keep = 'last')

答案 1 :(得分:3)

<强>解决方案
npm install --save auth0-js + groupby

nlargest

答案 2 :(得分:3)

df.sort_values('Year').groupby('Name',as_index=False).first()
Out[526]: 
   Name  Year  Value
0  Jack  2005     44
1  Jill  2001     93