繁体   English   中英

您可以根据总和或计数或多个变量过滤 Pandas 数据框吗?

[英]Can you filter a pandas dataframe based on a sum or count or multiple variables?

我正在尝试根据一组或条件过滤 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")

.query()上的.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。

您可以使用anyaxis = 1来检查一行中是否至少有一个值为True

例如,您可以运行

df[(df[["Q20r1", "Q20r2", "Q20r3"]] == 1).any(axis = 1)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM