这是我的问题:
我有一个看起来像这样的数据框:
Date Name Score Country
2012 Paul 45 Mexico
2012 Mike 38 Sweden
2012 Teddy 62 USA
2012 Hilary 80 USA
2013 Ashley 42 France
2013 Temari 58 UK
2013 Harry 78 UK
2013 Silvia 55 Italy
我想选择两个最好的分数,按日期筛选,也来自不同的国家。
例如:在 2012 年,希拉里 (Hilary) 的得分最高(美国),因此她将被选中。 Teddy在2012年获得第二好成绩,但他不会被选中,因为他来自同一个国家(美国) 因此,保罗将被选中,因为他来自不同的国家(墨西哥)。
这是我做的:
df = pd.DataFrame(
{'Date':["2012","2012","2012","2012","2013","2013","2013","2013"],
'Name': ["Paul", "Mike", "Teddy", "Hilary", "Ashley", "Temaru","Harry","Silvia"],
'Score': [45, 38, 62, 80, 42, 58,78,55],
"Country":["Mexico","Sweden","USA","USA","France","UK",'UK','Italy']})
然后我按日期和分数制作过滤器:
df1 = df.set_index('Name').groupby('Date')['Score'].apply(lambda grp: grp.nlargest(2))
但我真的不知道,也不知道如何进行考虑到他们必须来自不同国家的过滤器。
有人对此有想法吗?非常感谢你
编辑:我正在寻找的答案应该是这样的:
Date Name Score Country
2012 Hilary 80 USA
2012 Paul 45 Mexico
2013 Harry 78 UK
2013 Silvia 55 Italy
按日期、最佳分数和来自不同国家/地区过滤两个人
最佳答案
sort_values
+ tail
s=df.sort_values('Score').drop_duplicates(['Date','Country'],keep='last').groupby('Date').tail(2)
s
Date Name Score Country
0 2012 Paul 45 Mexico
7 2013 Silvia 55 Italy
6 2013 Harry 78 UK
3 2012 Hilary 80 USA
关于python - 根据多种条件过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096059/