【问题标题】:How to get Maximum points scored by which player in each year?如何获得每年哪个球员得分的最高分?
【发布时间】:2022-01-20 05:02:54
【问题描述】:

我有一个这样的数据集 -

Name    Point Year

Player1 498.0 2010

Player2 454.0 2010

Player1 396.0 2011

Player3 214.0 2011

player2 163.0 2011

现在我想看看每年哪个球员得分最高。

我试过了-

Maximum_score = df.groupby(['Year'])['Point'].max()

得到了结果-

年份

2010   498.0

2011   396.0

但我也想要玩家姓名。如何做到这一点?

【问题讨论】:

    标签: python python-3.x pandas pandas-groupby


    【解决方案1】:

    不要将它们存储在变量maximum_score 中,因为这样做只会将数据框修改为一列。 只需在下一行调用 df 即可获得结果:

    # maximum calcualtion
    df.groupby(['Year'])['Point'].max()
    df//print(df)
    

    【讨论】:

      【解决方案2】:

      您可以使用布尔索引。 groupby 在 Year 上找到最高分(就像你已经做过的那样)+ transform 每个组中每个玩家的每个组的最大值,并过滤每个组中得分最高的玩家:

      out = df[df.groupby(['Year'])['Point'].transform('max') == df['Point']]
      

      输出:

            Name  Point  Year
      0  Player1  498.0  2010
      2  Player1  396.0  2011
      

      【讨论】:

      • 谢谢,真的成功了。另一个问题是正常的 max() 和 .transform('max') 之间有什么区别,因为当我尝试单独使用 .max() 时它不起作用,但 .transform('max') 完成了这项工作。
      • @JATIN .max 正在为每个组查找所选列的最大值。 transform(max) 转换该最大值,即为组中的每个条目复制组最大值。
      猜你喜欢
      • 2020-02-11
      • 2016-05-23
      • 1970-01-01
      • 2019-10-28
      • 2020-12-08
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多