满足一个条件时选择所有组

时间:2018-05-31 21:21:11

标签: python pandas

            A    B
0  2002-01-12   39
1  2002-01-12   17
2  2002-01-12   31
3  2002-01-15   12
4  2002-01-15   25
5  2002-01-15   25
6  2002-01-20   16
7  2002-01-20   40
8  2002-02-20   20

我想在任意A值中选择满足条件B>30的{​​{1}}个群组。

输出应为:

B

我试过了:

            A    B
0  2002-01-12   39
1  2002-01-12   17
2  2002-01-12   31
6  2002-01-20   16
7  2002-01-20   40
8  2002-02-20   20

2 个答案:

答案 0 :(得分:2)

您提到了any,我们将filterany

一起使用
df.groupby('A').filter(lambda x : x['B'].ge(30).any())
Out[169]: 
            A   B
0  2002-01-12  39
1  2002-01-12  17
2  2002-01-12  31
6  2002-01-20  16
7  2002-01-20  40

答案 1 :(得分:1)

df[df.groupby('A').B.transform(lambda x: (x > 30).any())]