查询中的XOR运算符

2024-05-28 19:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df_matching,当两列在某些值上使用异或运算符不匹配时,我想要得到它

虽然该代码有效:

df_matching.query('(group == "treatment" and landing_page != "new_page") or  (group != "treatment" and landing_page == "new_page")')

此代码不会:

df_matching.query('(group == "treatment") ^ (landing_page == "new_page")')

虽然所有的搜索都表明python中的XOR运算符是“^”,我知道SQL中的XOR是XOR,但两者都不起作用。在df.query()中放置XOR的最佳方法是什么


Tags: orand数据代码dfnewsqlpage
1条回答
网友
1楼 · 发布于 2024-05-28 19:26:18

正如您所指出的,python按位异或(^)在pandas查询中无效。看起来没有打包的pd.query()XOR函数

为了补偿,我将使用2元素XOR的基本定义,即( A | B ) & ~( A & B ),并将条件设置为变量

a = 'group == "treatment"'
b = 'landing_page == "new_page"'

xor_ab = '('+a+'|'+b+') & ~('+a+'&'+b+')'

df_matching.query(xor_ab)

(稍微紧凑一些。)

相关问题 更多 >

    热门问题