python - 根据多个条件过滤数据框结果
问题描述
我正在努力根据多个条件过滤数据框结果集,希望您对以下案例提供帮助。
在下面的示例中,我想根据数据框中的两个条件进行过滤:
- “条件 1”列 = 1
- “条件 2”列 = 0
在代码中,我使用以下逻辑通过“filt”变量过滤结果:
filt = (df["Condition 1"] )== 1 & (df["Condition 2"] == 0)
不幸的是,双条件过滤器不会产生预期的结果。事实上,输出中既不满足条件 1 也不满足条件 2。
print(df.loc[filt, "Condition 3"])
另一种可行但我想避免的方法是创建第三个条件,其中“条件 1”-“条件 2”= 1并以此为基础进行过滤。这将如下所示:
filt2 = df["Condition 3"] == 1
print(df.loc[filt2, "Condition 3"])
请注意,在这种情况下,过滤器(“filt2”)中只有一个条件最终会产生预期的结果。
我的问题是:
- 在我的示例中,多个(两个)过滤器不起作用,而单个条件过滤器起作用,是否有原因?我在代码中忽略了什么?
- 对于用于创建第三种条件的替代方法,是否有更好和更简单的解决方案?
PS:下面关于“filt”的代码也会产生预期的结果。
filt = df["Condition 1"] - df["Condition 2"] == 1
解决方案
你应该像这样过滤:
filt = df[(df["Condition 1"] == 1) & (df["Condition 2"] == 0)]
过滤数据框将包含所需的结果
推荐阅读
- python - 如何捕获每个工作的 URL,以便在查看 csv 文件时打开完整的工作描述
- android - 如何在 Virtual Box 中的 Windows VM 中运行 Android?
- spring-aop - 如何将参数值传递给方面
- signalr - Clients.User(..) 中的 SignalR 连接客户端不应该存在
- python - 用python解析html文本
- r - Conditionally assign a value to column to say if it's before or after the value in another column
- android - 图像(仅)不会出现在存储在 FireBase Storage 中的 RecyclerView 中,而出现其他项目
- sql-server - 如果不存在记录,则使用现有值或默认值插入
- c# - 用Mysql datareader多次读取一列的内容
- postgresql - 如何使用 WMS 图层限制在边界框中看到的要素数量?