Python 如何创建宏以循环遍历Dataframe中的所有列?
我在分析一个数据集,里面有来自足球运动员的信息。我有足球运动员的名字,他的俱乐部和所有技能。我想从一家俱乐部得到所有球员的平均值,并检查哪家俱乐部的技术更好。例如,哪个俱乐部有速度更快的球员,最高的球员,等等 以下是我的数据:Python 如何创建宏以循环遍历Dataframe中的所有列?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我在分析一个数据集,里面有来自足球运动员的信息。我有足球运动员的名字,他的俱乐部和所有技能。我想从一家俱乐部得到所有球员的平均值,并检查哪家俱乐部的技术更好。例如,哪个俱乐部有速度更快的球员,最高的球员,等等 以下是我的数据: import pandas as pd df = pd.DataFrame( { "Club": ["Palmeiras", "SPFC", "Corinthians", "Palmeiras", "SPFC"], "Player
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
函数结合起来
我也发现了这个例子,但它对我不起作用。您想要组合
groupby().mean()
来获得俱乐部的所有平均统计数据,以及idxmax()
来识别具有最大平均数的俱乐部:
df.groupby('Club').mean().idxmax()
输出:
Balance Corinthians
Speed Palmeiras
Aggression Corinthians
dtype: object
我认为@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
问题是,我将不得不编写所有变量,这是一个大数据集。我举的例子很小,但目的是复制一个更大的。。。