如何使用宏来遍历Pandas数据框中的所有列?

2024-09-29 19:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在分析一组足球运动员的数据。我有足球运动员的名字,他的俱乐部和所有的技术。我想从一个俱乐部得到所有球员的平均值,并检查哪个俱乐部的技术更好。例如,哪个俱乐部有速度更快的球员,最高的球员,等等

我的数据是这样的:

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?,但它对我不起作用。你知道吗


Tags: 数据df速度技术例子pd俱乐部speed
2条回答

我认为@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

您需要使用groupby().mean()的组合来获得俱乐部的所有平均数据,并idxmax()来标识具有最大平均值的俱乐部:

df.groupby('Club').mean().idxmax()

输出:

Balance       Corinthians
Speed           Palmeiras
Aggression    Corinthians
dtype: object

相关问题 更多 >

    热门问题