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而不是你的数据帧