Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用isin函数后的空df

使用isin函数后的空df
EN

Stack Overflow用户
提问于 2022-03-28 00:23:27
回答 1查看 99关注 0票数 1

你好,我试图过滤掉另一个dict中包含的df列

以下是样本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import random
df = pd.DataFrame({'type': random.choice(['222', '44']), #let size be 10k for example
                   'method': random.choice(['open', 'close'])}) 
filter_dict = {'type': {0: ['44']}, 'method': {0: ['open', 'closed']}}

它工作得很好,with df[df['method'].isin(filter_dict['method'][0])]

当我尝试像这样过滤下一列时,我得到了一个空的dataframe

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df[df['type'].isin(filter_dict['type'][0])]

想想为什么会发生这种事,你的答案

熊猫版本是0.23.4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-28 00:30:47

您的示例是无效的(您在random.choice中有一个唯一的值,因此出现了熊猫错误),但是,否则,代码就像预期的那样工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
np.random.seed(0)
df = pd.DataFrame({'type': np.random.choice(['222', '44'], size=20),
                   'method': np.random.choice(['open', 'close'], size=20)})
filter_dict = {'type': {0: ['44']}, 'method': {0: ['open', 'closed']}}

df[df['type'].isin(filter_dict['type'][0])]

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   type method
1    44  close
2    44  close
4    44   open
5    44  close
6    44  close
7    44  close
8    44  close
9    44   open
10   44  close
13   44   open
19   44   open

如果要测试所有列上的条件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mask = np.all([df[c].isin(filter_dict[c][0]) for c in df.columns], axis=0)
df[mask]

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   type method
4    44   open
9    44   open
13   44   open
19   44   open
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71644380

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文