Dys*_*i_A 1 python sorting pandas
我正在寻找以下数据的每个组的前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
Run Code Online (Sandbox Code Playgroud)
我希望能够找到每个组(A,B,C)的前2个值。
Top_Products = df.nlargest(2, 'Rank')
Run Code Online (Sandbox Code Playgroud)
但是,这仅隔离了前2个产品。
有没有办法获得每个品牌的前2名产品。
所需输出:
Brand | Product | Rank
A | P3 | 2000
| P2 | 1210
B | P3 | 3490
| P4 | 2341
C | P5 | 4032
| P4 | 1202
Run Code Online (Sandbox Code Playgroud)
谢谢!
这应该可以解决问题:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1479 次 |
| 最近记录: |