根据特定列上的条件计数过滤数据框

时间:2020-02-29 10:00:21

标签: python pandas pandas-groupby

我有一个如下所示的数据框

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

1 个答案:

答案 0 :(得分:4)

比较列c以获得更大的值Series.gt,然后以GroupBy.transformsum计数值(True的值像{{1} }),最后用Series.ge进行过滤,以在boolean indexing中获得更大或更小的值:

1