我正在分析来自足球运动员的信息的数据集。我有足球运动员的名字,他的俱乐部和所有技能。我想从俱乐部中获取所有球员的均值,并检查该俱乐部更好的技能。例如,哪个俱乐部拥有更快的球员,最高的球员等等。
这是我的数据:
import pandas as pd
df = pd.DataFrame(
{
"Club": ["Palmeiras", "SPFC", "Corinthians", "Palmeiras", "SPFC"],
"Player": ["FFFFF", "EEEE", "DDDD", "CCCC", "BBBB"],
"Balance": [70, 80, 90, 50, 60],
"Speed": [90, 89, 70, 88, 80],
"Aggression": [70, 74, 80, 85, 66],
}
)
在此示例中,我得到的俱乐部平均速度最高:
print("Club with highest speed: " + df.groupby("Club")["Speed"].mean().reset_index().sort_values("Speed", ascending=False).iloc[0, 0])
我想为所有技能,速度最快的俱乐部,平衡最高的俱乐部等等打印相同的内容。我以为可以使用与之前使用df.iterrows()
类似的方法,但是,我很难将其与groupby
函数结合使用。
我也找到了这个示例How to loop over grouped Pandas dataframe?,但对我来说不起作用。
答案 0 :(得分:3)
您希望结合使用groupby().mean()
来获得各个俱乐部的所有均值统计数据,并结合idxmax()
来识别具有最大均值的俱乐部:
df.groupby('Club').mean().idxmax()
输出:
Balance Corinthians
Speed Palmeiras
Aggression Corinthians
dtype: object
答案 1 :(得分:0)
我认为@Quang Hoang已经解决了您的问题,但是如果您想在一个数据框中获得所有内容,则可以执行以下操作。
means = df.groupby('Club').mean().max()
best = df.groupby('Club').mean().idxmax()
res = pd.DataFrame([means, best], index=['Mean', 'Team']).T
In [1]: print(res)
Out[1]:
Mean Team
Balance 90 Corinthians
Speed 89 Palmeiras
Aggression 80 Corinthians