在 excel 列中搜索字符串

时间:2021-05-16 22:17:40

标签: python excel pandas

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

在我的代码中,我使用 Tkinter 让用户插入输入并使用 link_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 时,它返回 I will search and return back to you 为什么会发生这种情况,我该如何解决?< /p>

1 个答案:

答案 0 :(得分:0)

我可能有点误解了这个问题(Henry Ecker 对您遇到的直接问题是正确的),但 Pandas 的解决方案让我觉得有点奇怪。

我想我个人会做更多类似的事情来将数据框过滤到特定行。我通常会尽可能避免循环遍历数据帧。

import pandas as 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')
result = my_data[keep]

if len(result) > 0:
    print(result.Link.values)
else:
    print("I will search and return back to you")
相关问题