[英]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。
您可以使用any
和axis = 1
来检查一行中是否至少有一个值为True
。
例如,您可以运行
df[(df[["Q20r1", "Q20r2", "Q20r3"]] == 1).any(axis = 1)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.