如何显示不在groupby或agg函数中的列名?

2024-06-11 12:15:04 发布

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

我有Comp(PL,德甲等)专栏,gls专栏和player专栏

standard.groupby(['Comp'])['Gls'].max()

通过使用它,我可以在每个联赛中最大限度地进球

Comp

de Bundesliga         41

eng Premier League    23

es La Liga            30

fr Ligue 1            27

it Serie A            29

但是我怎么才能显示进球的球员的名字呢

我用过这个,

f = {'Gls': 'max','Player': 'first'} 
standard.groupby(['Comp'], as_index=False).agg(f)

它仍然不会给出期望的结果,因为它只显示每个联赛的名字

    Comp            Gls Player

0   de Bundesliga   41  Issah Abbas\Issah-Abbas

1   eng Premier League  23  Patrick van Aanholt\Patrick-van-Aanholt

2   es La Liga  30  Sabit Abdulai\Sabit-Abdulai

3   fr Ligue 1  27  Ismael Aaneba\Ismael-Aaneba

4   it Serie A  29  Gennaro Acampora\Gennaro-Acampora

Tags: esdeenglamaxstandardgroupbycomp
2条回答

您可以在下面尝试:

您将获得实际的数据帧

standard.groupby(['Comp'])['Gls'].transform(max) == df['Gls']

standard[standard['Gls'] == standard.groupby(['comp'])['Gls'].transform(max)]

使用nlargest

standard.groupby(['Comp']).apply(lambda x: x.nlargest(1, "Gls")).reset_index(drop=True)

您可以使用idxmax查找这些最大值的索引,并使用loc帧来获取player信息:

standard.loc[standard.groupby("Comp").Gls.idxmax()]

相关问题 更多 >