python - 查找两列一起不等于预定值的行
问题描述
我有一个数据框,我正在尝试查找其中两列不匹配的行。
例如,column:landing_page
可以等于new_page
或old_page
,并且column: group
可以等于control
或treatment
。目前我使用
no_line_up = df.query('group = treatment and landing_page = old_page or group = control and landing_page = new_page')
我正在尝试查找不匹配的new_page
行。treatment
但它会抛出错误。这样做的正确方法是什么?
解决方案
pd.DataFrame.query
您仍然需要使用相同的基本运算符,例如用于测试==
相等性并使用括号分隔条件:
df = pd.DataFrame({'group': ['treatment', 'control', 'hello'],
'landing_page': ['old_page', 'new_page', 'test']})
res = df.query('(group == "treatment" and landing_page == "old_page") \
or (group == "control" and landing_page == "new_page")')
print(res)
group landing_page
0 treatment old_page
1 control new_page
更具可读性的是结合布尔掩码并使用pd.DataFrame.loc
:
m1 = (df['group'] == 'treatment') & (df['landing_page'] == 'old_page')
m2 = (df['group'] == 'control') & (df['landing_page'] == 'new_page')
res = df.loc[m1 & m2]
推荐阅读
- javascript - 使用 CSS 和 javascript 显示活动的主菜单和子菜单
- r - 如何过滤掉值与其他值非常不同的行?
- java - 如何在格式化的 xpath 中使用撇号?
- sql - 选择具有 balance(:name, :balance) 值的前 5 个客户,并将其他具有 name 其他和余额总和的客户
- r - 在 R 中构建 libKML 驱动程序
- python - ansible jinja 或 python;动态 json 结构的计算
- django - 在 Django 应用程序中打开 pdf 文件
- error-handling - 控制器中的错误处理
- postgresql - 为什么我无法安装 Postgresql (PostgreSQL-9.6.2-2-win64-bigsql.exe)?视窗
- android - SQLite 数据库游标崩溃