pandas - 根据一组列中的条件选择行
问题描述
我有一个df
df = pd.DataFrame({'s1':[1,1],'s2':['-',1],'s3':[1,'-'], 's4':[0,1], 's5':[0,1], 's6':['-',1], 's7':[0,'-'], 's8':[0,0]})
s1 s2 s3 s4 s5 s6 s7 s8
0 1 - 1 0 0 - 0 0
1 1 1 - 1 1 1 - 0
我想根据多组列中的条件选择行,以便
在 s1、s2、s3 或 s4 中至少观察到一次“1”,而在 s5、s6、s7 或 s8 中未观察到“1”
或
“在 s5、s6 或 s7 中至少观察到 1 次,而在 s1、s2、s3、s4、s7 或 s8 中未观察到“1”
结果应该只有第一行
解决方案
定义两组条件并使用布尔索引,
cond1 = df[['s1', 's2', 's3','s4']].eq(1).any(1)
cond2 = df[['s5', 's6', 's7','s8']].ne(1).all(1)
df.loc[(cond1 & cond2)]
s1 s2 s3 s4 s5 s6 s7 s8
0 1 - 1 0 0 - 0 0
推荐阅读
- amazon-web-services - AWS Polly Javascript SDK polly 错误 ConfigError: Missing region in config at Request.VALIDATE_REGION
- python - 如何在 Kivy 桌面应用程序中将 Kivy 窗口置于前台?
- xml - 使用 Xpath 提取具有属性的元素
- blazor - Blazor 和 github 页面 (index.cshtml) 的问题
- c# - 当我只有 WCF 客户端时如何创建新的 WCF 服务
- ruby-on-rails - 为什么 bundler exec 无法在我的 Docker 入口点中加载 rails 命令?
- java - 如何在应用程序启动时显示自定义对话框?
- angular - 使用 Subject 或 BehaviourSubject 通过服务提醒组件发生了什么事?
- javascript - 在 d3.js 中使用带有坐标的 json 文件创建多行
- java - 为什么我收到“无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。” 错误