Python 在excel列中搜索字符串

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

我试图在excel电子表格中查找字符串,但它只捕获第一行,而忽略了搜索其余行

在我的代码中,我使用Tkinter让用户插入一个输入,并使用
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代码应位于循环体之后。因为如果找到值,您将返回,如果到达循环的末尾,您将找不到值。