我有一个由ID、性别、姓名和等级组成的熊猫数据框架
+-----------------------------------+
| ids | gnr | nms | rnk |
|-----------------------------------+
| C | F | H | 8 |
| A | F | Q | 3 |
| B | F | A | 2 |
| C | M | J | 1 |
| A | M | E | 2 |
| A | F | J | 2 |
| B | M | X | 6 |
| B | M | X | 2 |
| C | F | F | 3 |
| C | M | J | 8 |
| A | M | X | 9 |
| C | M | O | 5 |
| B | M | L | 7 |
| B | F | T | 7 |
| A | M | W | 9 |
+-----------------------------------+
data.groupby(['ids', 'gnr'])['rnk'].nsmallest(2).reset_index().drop(columns='level_2')
我用下面的命令按ID、性别和等级对它们进行分组(每个性别和ID获得等级中最小的2个),结果如下
+--------------------------+
| ids | gnr | rnk |
|--------------------------|
| A | M | 2 |
| A | M | 5 |
| A | F | 2 |
| A | F | 3 |
| B | M | 2 |
| B | M | 6 |
| B | F | 2 |
| B | F | 7 |
| C | M | 1 |
| C | M | 5 |
| C | F | 3 |
| C | F | 8 |
+--------------------------+
我想使用我从nsmallest()获得的排名前2的结果来获得每个ID和性别的前2名
像这样的
+-----------------------------------+
| ids | gnr | rnk | nms |
|--------------------------|--------|
| A | M | 2 | E |
| A | M | 5 | W |
| A | F | 2 | J |
| A | F | 3 | Q |
| B | M | 2 | X |
| B | M | 6 | X |
| B | F | 2 | A |
| B | F | 7 | T |
| C | M | 1 | J |
| C | M | 5 | O |
| C | F | 3 | F |
| C | F | 8 | H |
+-----------------------------------+
目前没有回答
相关问题 更多 >
编程相关推荐