获取组的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个最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章