2017-10-11 45 views
1

我有行如如何刪除與熊貓對應的某些值的最大行數?

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 

這可以用一種簡單的方法來完成嗎?

回答

2
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') 
+5

這是一個很好的答案,但只,如果你工作可靠排序第一。 'df.sort_values('Year')。drop_duplicates(subset ='Name',keep ='last')'+1 from my。 – piRSquared

+0

Upvote從我也是。 –

2

解決方案
groupby + nlargest

df.groupby('Name', group_keys=False).apply(
    lambda d: d.nlargest(1, columns='Year')) 

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