首页 > 解决方案 > 在 python 中使用 OR 对 3 列进行 AND 逻辑运算符

问题描述

所以我正在尝试制作一个布尔搜索程序,用户输入关键字并在我的数据框中进行搜索。我设法进行了 1 个单词的搜索,但我在输入 2 个单词时遇到了问题。我从用户那里获取 2 个单词并尝试搜索并打印出来,但它似乎不起作用。我有 4 列 - One_key、Two_key、Three_key、链接。

我正在尝试在(一个或两个或三个键)中搜索 word_y 和(一个或两个或三个键)中的 word_z

,One_key,Two_key,Third_key,link
0,parliament,laws,agricultural,www.xyz.com
1,population,supreme court,ampc,www.zyx.com
2,protest,road,blockades,www.fdw.com
3,violence,tweeted,batons,www.jsa.com
4,Rihanna,tweet,government, www.xyz.com
5,barbadian,Chris Brown,together, www.ici.com

编码:

if x == '2':
print("enter the 2 words to search:")
y = input()
z = input()
logic = input("Enter number for logic: 1. AND 2. OR \n")
if logic == '1':
    and_logic = keyword[(keyword["One_key"]==y) | (keyword["Two_key"]== y) 
                                        | (keyword["Third_key"]==y)] &
        keyword[(keyword["One_key"]==z) | (keyword["Two_key"]== z) 
                                        | (keyword["Third_key"]==z)]
    print((and_logic)

如何在y和z输入之间编写和操作?

标签: pythonpandasdataframe

解决方案


You already have everything you need, just chaining up & and |. It could be something like this,

found_y = (keyword["One_key"]==y) | (keyword["Two_key"]== y) | (keyword["Third_key"]==y)
found_z = (keyword["One_key"]==z) | (keyword["Two_key"]== z) | (keyword["Third_key"]==z)
and_logic = keyword[found_y & found_z]
or_logic = keyword[found_y & found_z]

To make it cleaner,

cols = ["One_key", "Two_key", "Third_key"]
found_y =(keyword[cols]==y).any(axis="columns")
found_z =(keyword[cols]==z).any(axis="columns")
and_logic = keyword[found_y & found_z]
or_logic = keyword[found_y & found_z]

推荐阅读