【问题标题】:How to display a column name which isnt going to be in groupby or agg function?如何显示不会出现在 groupby 和 agg 函数中的列名?
【发布时间】:2021-09-08 13:43:34
【问题描述】:

我有 Comp(PL,Bundesliga etc) 专栏和 gls 专栏和球员专栏

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

【问题讨论】:

标签: python pandas


【解决方案1】:

你可以去idxmax找到那些最大值的索引和loc帧与那些也得到player信息:

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

【讨论】:

  • @adadadad 对不起,这是一个额外的术语。它也有效,因为to_numpy 给出了系列的值,例如,[0, 4, 2] 没有键(索引)。但是由于我们使用一个系列(方括号中的那个人)进行索引,所以无论如何都会使用它的值,并且to_numpy 不是必需的。
【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2021-12-01
    • 2018-07-23
    相关资源
    最近更新 更多