python - 您可以根据总和或计数或多个变量过滤熊猫数据框吗?
问题描述
我正在尝试根据一组 or 条件过滤 Pandas 数据框,但它们都非常相似,我想知道是否有更有效的方法来编写它。
具体来说,我想包括数据框(df)中的任何一组变量为1的行:
df.query("Q50r5==1 or Q50r6==1 or Q50r7==1 or Q50r8==1 or Q50r9==1 or Q50r10==1 or Q50r11==1")
这会正确过滤到这些变量中的任何一个为 1 的行。
但是,我希望有更多的情况需要将我的数据框过滤为类似的东西,例如:
df.query("Q20r1==1 or Q20r2==1 or Q20r3==1")
df.query("Q23r2==1 or Q23r5==1 or Q23r7==1 or Q23r8==1")
pandas 文档.query()
只指定了您可以在 Python 的其他地方使用的和或类似的内容,因此这可能是执行此查询的唯一方法,但是我可以做某种总和或计数吗跨查询中的这些列?像“any(1,Q20r1,Q20r2,Q20r3)”或“sum(Q20r1,Q20r2,Q20r3)>0”这样的东西?
我想检索 ID #s 1、2、4、5、7 并排除 #s 3 和 6,因为 3 和 6 在我所指的列中没有任何 1。
解决方案
您可以使用any
withaxis = 1
来检查是否至少有一个值True
在一行中。
例如,您可以运行
df[(df[["Q20r1", "Q20r2", "Q20r3"]] == 1).any(axis = 1)]
推荐阅读
- angular - 我们可以从前端下拉按钮以角度更改环境产品文件中的 BASEURL 吗?
- sql - SSRS 报告生成器日期参数为 MM/DD/YYYY
- c# - 如何将带有连接的 linq 查询转换为方法语法?
- x11 - 如何使用 xlib 使窗口透明但线条可见
- asp.net - 使用 Razor Pages 在路由中间定义所需的路径参数?
- json - 尝试从从外部 URL 加载数据的页面中抓取文本
- python - 通过步长减少自定义损失函数的权重
- android - 在颤动的通知中显示小部件
- rest - 发布订阅 HTTP POST?
- java - java.lang.ClassNotFoundException:com.jdbc.mysql.Driver 即使在添加 java 连接器 jar 文件后也会发生