python - 在 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输入之间编写和操作?
解决方案
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]
推荐阅读
- ruby-on-rails - 在 Rails 中拥有额外的“便利”关联是一种好习惯吗?
- r - 我需要帮助映射 R 编码
- reactjs - MaterialUI 动态创建复选框
- python - 如何从元组列表中获取奇异值?
- mysql - 处理随机 ID 存储
- database - 如何使用 Python 通过 SSH 连接到 Sqlite3 数据库?
- python - Python - 关于 selenium Dropbox 的问题,没有选项和协议复选框用于网络爬取
- c - 尝试在随机 x 位置创建精灵而不在 c 中重叠
- angular - typescript async http get 在 for 循环中调用
- delphi - idhttp 和响应编码问题