Я работаю с фреймом данных, который содержит 20К строк.Я создал образец фрейма данных, как показано ниже, для репликации фрейма данных.
df = pd.DataFrame()
df ['Team'] = ['A1','A1','A1','A2','A2','A2','B1','B1','B1','B2','B2','B2']
df ['Competition'] = ['L1','L1','L1','L1','L1','L1','L2','L2','L2','L2','L2','L2']
df ['Score_count'] = [2,1,3,4,7,8,1,5,8,5,7,1]
Я хотел бы сохранить строки, в которых используются два максимальных значения Score_count с помощью groupby(['Competition','Team'])
.сохранить строки с максимальным Score_count, используя transform (max), следующим образом:
idx = df.groupby(['Competition','Team'])['Score_count'].transform(max) == df['Score_count']
df = df[idx]
Но я хотел сохранить максимальное количество n чисел (в данном случае это два максимальных значения) Score_count для одного и того жеgroupby.
Как я могу это сделать?
Ниже приведен мой ожидаемый результат:
Team Competition Score_count
0 A1 L1 3
1 A1 L1 2
2 A2 L1 8
3 A2 L1 7
4 B1 L2 8
5 B1 L2 5
6 B2 L2 7
7 B2 L2 5
Вы также можете обратиться к рисунку ниже для ожидаемого результата:
Кто-нибудь может посоветовать, как это сделать?Спасибо,
Zep