python - 获取组的 n 个最大值

标签 python pandas sorting

<分区>

我希望为以下数据隔离每组的前 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

谢谢!

最佳答案

这应该可以解决问题:

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

关于python - 获取组的 n 个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50028727/

相关文章:

performance - 是否有任何现实世界的 CPU 不使用 IEEE 754?

Python找不到库但pycharm可以

python - Django 将页面限制为某些用户

python - GroupBy Pandas 计算连续的零

python - python pandas 中的嵌套数据框/索引

python - 有什么办法可以加快 Pandas 比较的速度吗?

android - 在 Android 中按字母顺序对文件列表、文件夹和文件进行排序

python - 从 DictReader 写入 CSV 时出错

python - 如何防止 python 脚本从特定网页重定向?

javascript - 按共同值(value)观分组