获取组的n个最大值[重复]

Posted

技术标签:

【中文标题】获取组的n个最大值[重复]【英文标题】:Getting the n largest values for groups [duplicate] 【发布时间】:2018-10-06 07:28:36 【问题描述】:

我希望为以下数据隔离每组的前 2 个值。

Brand | Product | Rank
  A   |    P1   |   1000
      |    P2   |   1210
      |    P3   |   2000
      |    P4   |   600
      |    P5   |   756
      |    P6   |   867
  B   |    P1   |   549
      |    P2   |   1572
      |    P3   |   3490
      |    P4   |   2341
      |    P5   |   431
      |    P6   |   321
  C   |    P1   |   421
      |    P2   |   121
      |    P3   |   805
      |    P4   |   1202
      |    P5   |   4032
      |    P6   |   432

我希望能够获得每个组(A、B、C)的前 2 个值。

Top_Products = df.nlargest(2, 'Rank')

不过,这只会隔离前 2 个产品。

有没有办法获得每个品牌的前 2 名产品。

期望的输出:

Brand | Product | Rank
  A   |    P3   |   2000
      |    P2   |   1210
  B   |    P3   |   3490
      |    P4   |   2341
  C   |    P5   |   4032
      |    P4   |   1202

谢谢!

【问题讨论】:

这是个骗子,你需要 groupby 和 nlargest ***.com/questions/49983957/… 感谢您为我指明正确的方向! 【参考方案1】:

这应该可以解决问题:

df.groupby('Brand').apply(lambda x: x.nlargest(2, 'Rank')).reset_index(drop=True)  

  Brand Product  Rank
0     A      P3  2000
1     A      P2  1210
2     B      P3  3490
3     B      P4  2341
4     C      P5  4032
5     C      P4  1202

【讨论】:

如果您认为您的解决方案足够独特或更多最新,您应该将其添加到问题中链接到的副本中。

以上是关于获取组的n个最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取每组的前 n 个结果 [重复]

嵌套元组的最大值[重复]

[算法]打印N个数组的整体最大Top K

如何从SQL表中删除不是组的最大值的记录[重复]

如何在 hive sql 中获取每个组的最大 row_number()

[题解] [FJOI2016] 建筑师