pandas groupby和get val by rank列

2024-06-29 01:06:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由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   |
+-----------------------------------+

Tags: 数据框架ididsdataindexdropreset