我有一个这样的数据框:
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
答案 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