首页 > 解决方案 > 从 pandas 数据框中的类别(列)中选择前 n 行并对其执行计算

问题描述

我是熊猫的新手,我正在分析 FIFA 数据集,我需要为每个位置选择前 5 名球员(基于总分)。

还,

对于上述情况,我想检查是否有任何玩家出现在多个组中。2. 对各个组执行平均、最大值等操作。

谢谢

使用此操作时,我无法检索名称和工资等其他列。

fifa_df.groupby('Position')['Overall'].nlargest(5).groupby('Position').head()

示例数据: 在此处输入图像描述 预期结果如下:

在此处输入图像描述

我也在努力寻找,所有球员都在一个以上的小组中,

并尝试为每个位置的前 5 名球员进行平均工资等操作。

数据集链接 - fifa_dataset

标签: python-3.xpandasdataframe

解决方案


尝试在应用中使用 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
....

我希望它能解决你的问题


推荐阅读