Python Groupby根据等级有条件地创建数据帧和删除值

Python Groupby根据等级有条件地创建数据帧和删除值,python,pandas,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的第二个和第三个最大值以外的所有内容 所需输出: Col1 | Col2 | Col3 a | 3 | 7 a | 1 | 3 b | 2

我有这样一个数据帧:

Col1 | Col2 | Col3
 a   |   8  |  9
 a   |   3  |  7
 a   |   1  |  3
 a   |   0  |  8
 b   |   6  |  18
 b   |   2  |  6
假设可能的话,我想通过对Col1进行分组,除去Col2的第二个和第三个最大值以外的所有内容

所需输出:

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

可以使用
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

这些都是示例数字,并不具有代表性。但是如果我可以基于Col1创建一个连续的列,它就可以工作了!请参见编辑。第二个和第三个值并不总是有值1和2@NBC伙计,你真的不明白,我的解决方案,1,2是来自cumcount而不是你的数据帧