在熊猫groupby中找到符合条件的群体

时间:2019-03-20 14:05:56

标签: python pandas pandas-groupby

这是我的数据框:

df = pd.DataFrame({'a':list('xxxyyzz'), 'b':[10,20,30,5,3,1,2]})

我将它们分组:

groups = df.groupby('a')

我要打印至少20个以上的b的组。在这种情况下,我要打印x。 这是我想要的结果:

x
   a   b
0  x  10
1  x  20
2  x  30

3 个答案:

答案 0 :(得分:4)

Series.gt比较值,按a-Series之类的df['a']列进行分组,并使用GroupBy.transformGroupBy.any来测试至少一个每组True

df1 = df[df['b'].gt(20).groupby(df['a']).transform('any')]
print (df1)
   a   b
0  x  10
1  x  20
2  x  30

答案 1 :(得分:4)

您可以使用GroupBy检查哪些值在20anyatransform之上,以仅选择至少一行满足以下条件的那些组条件:

df[df.b.gt(20).groupby(df.a).transform('any')]

   a   b
0  x  10
1  x  20
2  x  30

答案 2 :(得分:4)

无需groupby,只需isin

df[df.a.isin(df.loc[df.b>20,'a'])]
Out[996]: 
   a   b
0  x  10
1  x  20
2  x  30