我有一个如下所示的数据框
df = pd.DataFrame({'a':[1,2,3,4,4,1,2,2,3,1,3,3,4], 'b':[3,2,5,6,4,5,5,6,4,4,2,6,1], 'c':[4,4,5,4,3,5,3,3,3,2,4,3,5]})
df
a b c
0 1 3 4
1 2 2 4
2 3 5 5
3 4 6 4
4 4 4 3
5 1 5 5
6 2 5 3
7 2 6 3
8 3 4 3
9 1 4 2
10 3 2 4
11 3 6 3
12 4 1 5
我想过滤数据帧以返回包含条目的数据帧,以便对于列“ a”的每个唯一值,列“ c”的计数值大于3的值都应大于或等于2。
在上面的示例中,我希望输出数据框为
0 1 3 4
2 3 5 5
3 4 6 4
4 4 4 3
5 1 5 5
8 3 4 3
9 1 4 2
10 3 5 4
11 3 6 3
12 4 4 5
由于列'a'的值为2,因此'c'> 3小于2。我应该删除所有这些行。其他行显示为'a'= 1具有对应的count('c'> 3)> = 2和'a'= 3具有对应的count('c'> 3)> = 2和'a'= 4具有对应的count ('c'> 3)> = 2
答案 0 :(得分:4)
比较列c
以获得更大的值Series.gt
,然后以GroupBy.transform
和sum
计数值(True
的值像{{1} }),最后用Series.ge
进行过滤,以在boolean indexing
中获得更大或更小的值:
1