вот моя проблема:
У меня есть dataFrame, который выглядит следующим образом:
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 году у Хилари лучший результат (США), поэтому она будет выбрана. У Тедди второй лучший результат в 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
Отфильтруйте двух человек по дате, лучшему результату и из другой страны