首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多准则的基于行的数据过滤

基于多准则的基于行的数据过滤
EN

Stack Overflow用户
提问于 2022-02-17 07:44:55
回答 1查看 32关注 0票数 0

我在熊猫中有下面的基于行的数据集,并希望过滤满足多个标准的模块,例如所有带有(setting='Foo' and value=2) and (setting='bar' and value=1)的模块

目前,我正在为每个标准分别获得模块,然后构建所有单个结果的交集。是否有更有效的方法,例如将数据集转换为基于列的数据集,然后使用一个查询(setting_foo=2 and settting_bar=3)进行过滤

代码语言:javascript
复制
module    setting   value
-----------------------------------------
A         Foo       2
A         bar       1
B         Foo       3
B         bar       1
...

本例所需的输出将是模块A,因为模块B实现了bar=1,而不是foo=2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-17 07:54:18

您可以使用.pivot为每个模块创建Foo列和Bar列,如下所示:

代码语言:javascript
复制
df_pivot = df.pivot(index='module', columns='setting', values='value').reset_index()

给予:

代码语言:javascript
复制
setting module  Foo  bar
0            A    2    1
1            B    3    1

然后可以使用.loc筛选Foo=2和bar=1所在的位置,并对模块列进行筛选,如下所示:

代码语言:javascript
复制
df_pivot.loc[(df_pivot['Foo'] == 2) & (df_pivot['bar'] == 1), 'module']

其中产出:

代码语言:javascript
复制
0    A
Name: module, dtype: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71154168

复制
相关文章

相似问题

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