首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pandas groupby中查找满足条件的组

在pandas groupby中查找满足条件的组
EN

Stack Overflow用户
提问于 2019-03-20 22:05:56
回答 3查看 1.7K关注 0票数 3

这是我的数据框架:

代码语言:javascript
运行
复制
df = pd.DataFrame({'a':list('xxxyyzz'), 'b':[10,20,30,5,3,1,2]})

我对它们进行分组:

代码语言:javascript
运行
复制
groups = df.groupby('a')

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

代码语言:javascript
运行
复制
x
   a   b
0  x  10
1  x  20
2  x  30
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-20 22:07:25

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

代码语言:javascript
运行
复制
df1 = df[df['b'].gt(20).groupby(df['a']).transform('any')]
print (df1)
   a   b
0  x  10
1  x  20
2  x  30
票数 5
EN

Stack Overflow用户

发布于 2019-03-20 22:07:31

您可以使用any检查哪些值高于20GroupByatransform,以便只选择那些至少有一行满足条件的组:

代码语言:javascript
运行
复制
df[df.b.gt(20).groupby(df.a).transform('any')]

   a   b
0  x  10
1  x  20
2  x  30
票数 4
EN

Stack Overflow用户

发布于 2019-03-20 22:07:41

不需要groupby,只需执行isin即可

代码语言:javascript
运行
复制
df[df.a.isin(df.loc[df.b>20,'a'])]
Out[996]: 
   a   b
0  x  10
1  x  20
2  x  30
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55262665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档