这是我的数据框架:
df = pd.DataFrame({'a':list('xxxyyzz'), 'b':[10,20,30,5,3,1,2]})我对它们进行分组:
groups = df.groupby('a')我想打印至少有一个b大于20的组。在这种情况下,我想打印x。这是我想要的结果:
x
   a   b
0  x  10
1  x  20
2  x  30发布于 2019-03-20 22:07:25
按Series.gt比较值,按a列分组,如Series - df['a'],并使用GroupBy.transform和GroupBy.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发布于 2019-03-20 22:07:31
发布于 2019-03-20 22:07:41
不需要groupby,只需执行isin即可
df[df.a.isin(df.loc[df.b>20,'a'])]
Out[996]: 
   a   b
0  x  10
1  x  20
2  x  30https://stackoverflow.com/questions/55262665
复制相似问题