我是大熊猫的新手,我正在分析FIFA数据集,我需要为每个排名选择前5名球员(基于总分)。
也是
我想检查是否有一个或多个以上组的队员在场。 2.对各个组执行平均值,最大值之类的运算。
谢谢
使用此操作时,我无法检索“名称”和“工资”等其他列。
fifa_df.groupby('Position')['Overall'].nlargest(5).groupby('Position').head()
我也想找到一个小组中所有在场的球员,
并尝试进行每个职位前5名球员的平均工资之类的操作。
数据集链接-fifa_dataset
答案 0 :(得分:2)
fifa_df.sort_values('Overall', ascending=False).groupby('Position').head(5).sort_values(['Position', 'Overall'], ascending=False)
Name Position Overall Wage
1 Cristiano Ronaldo ST 94 €405K
10 R. Lewandowski ST 90 €205K
23 S. Agüero ST 89 €300K
16 H. Kane ST 89 €205K
36 G. Bale ST 88 €355K
517 S. Coleman RWB 80 €97K
465 P. Kadeřábek RWB 80 €39K
450 M. Ginter RWB 80 €28K
652 D. Caligiuri RWB 79 €33K
766 Pablo Maffeo RWB 78 €24K
...
答案 1 :(得分:1)
尝试在应用中使用nlargest
res = df[['Name','Position','Overall','Wage']]
res= res.groupby(['Position'],as_index=False).apply(lambda x: x.nlargest(5, 'Overall'))
res.reset_index(inplace=True)
data.drop(['level_0','level_1'],axis=1,inplace=True)
print(data)
Name Position Overall Wage
0 A. Griezmann CAM 89 €145K
1 C. Eriksen CAM 88 €205K
2 Roberto Firmino CAM 86 €195K
3 T. Müller CAM 86 €135K
4 M. Özil CAM 86 €190K
5 D. Godín CB 90 €125K
6 S. Umtiti CB 87 €205K
7 M. Benatia CB 86 €160K
8 N. Otamendi CB 85 €170K
9 Naldo CB 85 €38K
....
我希望它能解决您的问题