我试图在 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>
答案 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")