Python 在excel列中搜索字符串
我试图在excel电子表格中查找字符串,但它只捕获第一行,而忽略了搜索其余行 在我的代码中,我使用Tkinter让用户插入一个输入,并使用Python 在excel列中搜索字符串,python,excel,pandas,Python,Excel,Pandas,我试图在excel电子表格中查找字符串,但它只捕获第一行,而忽略了搜索其余行 在我的代码中,我使用Tkinter让用户插入一个输入,并使用link\u url()将其与excel工作表中的每个列单元格匹配,如果匹配,则捕获同一行另一列的值。 以下是与excel工作表索引相同的内容: Name Link 0 ABC www.linkname1.com 1 DEF www.linkname2.com 2 GHI www.linkname3.com
link\u url()
将其与excel工作表中的每个列单元格匹配,如果匹配,则捕获同一行另一列的值。
以下是与excel工作表索引相同的内容:
Name Link
0 ABC www.linkname1.com
1 DEF www.linkname2.com
2 GHI www.linkname3.com
3 JKL www.linkname4.com
4 MNO www.linkname5.com
5 PQR www.linkname6.com
6 STU www.linkname7.com
7 VWX www.linkname8.com
8 YZZ www.linkname9.com
9 123 www.linkname10.com
我通过以下函数创建了一个搜索输入:
def link_url():
df = pd.read_excel('Links.xlsx')
for i in df.index:
# print(df['Name'])
# print(e.get())
if e.get() in df['Name'][i]:
print(df['Name'][i])
link_url = df['Link'][i]
known.append(e.get())
return link_url
else:
unknown.append(e.get())
unknown_request = "I will search and return back to you"
return unknown_request
我的问题
当我搜索
ABC
时,它会按要求返回www.linkname1.com
,但当我搜索DEF
时,它会返回,我会搜索并返回给你
为什么会发生这种情况,我如何解决它?我可能对这个问题有点误解(亨利·埃克(Henry Ecker)对你遇到的直接问题的看法是正确的),但熊猫的解决方案让我觉得有点奇怪
我想我个人会做一些类似的事情,将数据帧过滤到特定的行中。我通常会尽可能避免在数据帧中循环
将熊猫作为pd导入
my_data=pd.DataFrame(
{'Name':['ABC','DEF','GHI'],
‘Link’:[‘www.linkname1.com’、‘www.linkname2.com’、‘www.linkname3.com’]}
)
keep=my_data.Name.eq('DEF'))
结果=我的数据[保留]
如果len(结果)>0:
打印(结果.链接.值)
其他:
打印(“我将搜索并返回给您”)
您正在使用嵌套的if-else循环。您将在if和else中返回。return
将结束函数并退出循环。在第一次迭代中,如果df['Name'][i]中的e.get()为false,您将返回该消息,并且不会检查任何进一步的值。(在任何一种情况下,您都将无法通过第一个循环)。else代码应位于循环体之后。因为如果找到值,您将返回,如果到达循环的末尾,您将找不到值。