为了账号安全,请及时绑定邮箱和手机立即绑定

使函数检查Excel中的匹配数据不断返回假

使函数检查Excel中的匹配数据不断返回假

白衣染霜花 2022-09-13 17:18:11
我想使用python制作一个函数来检查一个数字(基于文件字符串获得的)是否存在于使用熊猫的Excel中,如果该数字存在,它将执行类似“...已注册“并执行某些功能,反之亦然。我试图使用的代码是这样的:from tkinter import filedialogimport pandas as pdimport refile = filedialog.askopenfilename(initialdir="C:/", title="choose file", filetypes=(("xlsx", "*.xlsx"), ("xls", "*.xls")))name = (r'/(\w+)_(\w+)_excel.xlsx')number = re.search(name, file).group(2)references = pd.read_excel(r'C:/example.xlsx')if float(number) == references:    print(number + " is registered") #and more functionelse:    print(number + " is not registered") #and more function当我使用这段代码时,它将返回值错误:ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().我稍微查找了一下,发现(据我所知)发生这种情况是因为该函数不够具体,可以返回true或false,然后我尝试使用或之后在函数中,但不知何故,即使该数字确实存在于excel中,它也会继续返回false。.any.allreferences当我尝试使用它来检查它时,它将显示一个列表,它会告诉我在哪里找到匹配的数据,但是不知何故,当我试图从中生成一个函数时,它会不断返回false。print(number == references)引用excel仅在单元格A1中包含“标题”,其余只是其中注册的数字。我试图寻找它并找到一些东西,但我不知道如何把它作为一个功能,我不认为我可以用它来解决我的问题。pandas.DataFrame.isin我很抱歉,如果这是一个相当容易的问题,但不知何故,我找不到这个问题的答案,而且我是python的新手,英语不是我的第一语言。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

我对Python还比较陌生,但让我一起来想:

  • 您正在从 Excel 文件名中提取变量,假设从 类似的东西中提取。右?1234ABCDTestFile_1234ABCD_excel.xlsx

  • 然后,您正在将调用的文件的内容拉入数据帧,对吗?C:/example.xlsx

  • 最后,您正在检查变量是否在数据帧的某个位置找到?

所以,我认为这里出错的是,你正在使用相等运算符将数据帧与变量进行比较。这很可能是返回的原因,但我没有地方说这是实际原因,因为我还没有完全理解Pyhton力学。==False

但是,对我复制您的问题有效的方法如下:我只是使用了:

if number in references.values:

    print(number + " is registered") #and more function

else:

    print(number + " is not registered") #and more function

这是可行的,因为“数据帧类提供了一个成员变量,即数据帧值。它返回数据帧中所有值的 numpy 表示形式。我们可以对这些值使用 in & not in 运算符来检查给定元素是否存在。源


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信