Groupby Pandas数据帧和丢弃值有条件地基于排名

时间:2018-06-01 01:53:18

标签: python pandas

我有一个这样的数据框:

Col1 | Col2 | Col3
 a   |   8  |  9
 a   |   3  |  7
 a   |   1  |  3
 a   |   0  |  8
 b   |   6  |  18
 b   |   2  |  6

我想通过对Col1进行分组来放弃除Col2的第2和第3个最高值之外的一切,假设它可能

所需输出:

Col1 | Col2 | Col3
 a   |   3  |  7
 a   |   1  |  3
 b   |   2  |  6

1 个答案:

答案 0 :(得分:1)

可以使用cumcount

df[df.groupby('Col1').cumcount().isin([1,2])]
Out[423]: 
  Col1  Col2  Col3
1    a     2     7
2    a     1     3
5    b     2     6

更多信息:

df.groupby('Col1').cumcount()
Out[435]: 
0    0
1    1
2    2
3    3
4    0
5    1
dtype: int64