python - 查找两列合计不等于预定值的行

标签 python pandas dataframe indexing

我有一个数据框,我正在尝试查找其中两列不匹配的行。

例如,column:landing_page 可以等于 new_pageold_pagecolumn:group 可以等于 >控制治疗。目前我使用

no_line_up = df.query('group =治疗和landing_page = old_page或group =控制和landing_page = new_page')

我正在尝试查找 new_pagetreatment 不匹配的行。

但它会抛出错误。这样做的正确方法是什么?

最佳答案

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

更具可读性的是组合 bool 掩码并使用 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]

关于python - 查找两列合计不等于预定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123199/

相关文章:

python - 'file' 对象中超出范围的列表索引——Python

基于列名前缀的 Pandas 数据透视列

pandas - 检查数据框中的列是否为整数,并执行操作

r - 将匹配 NA 的 df 的字符行与所有内容进行比较,并根据比较创建新列或 df

dataframe - 在同一列中分配过滤值的结果不正确

r - 如何在 R data.frame 中创建组合变量?

python - 组合Python 3格式(尝试同时使用千位分隔符和两位小数)

Python,缩放浮点范围 [0,1) 到 [min, max)

python - 添加字符在前面添加一个字符

python - 从 Pandas 字典列表中删除多级列