猿问

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

我想使用python制作一个函数来检查一个数字(基于文件字符串获得的)是否存在于使用熊猫的Excel中,如果该数字存在,它将执行类似“...已注册“并执行某些功能,反之亦然。


我试图使用的代码是这样的:


from tkinter import filedialog

import pandas as pd

import re


file = 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 function

else:

    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的新手,英语不是我的第一语言。


白衣染霜花
浏览 120回答 1
1回答

慕莱坞森

我对Python还比较陌生,但让我一起来想:您正在从 Excel 文件名中提取变量,假设从 类似的东西中提取。右?1234ABCDTestFile_1234ABCD_excel.xlsx然后,您正在将调用的文件的内容拉入数据帧,对吗?C:/example.xlsx最后,您正在检查变量是否在数据帧中的某个位置找到?所以,我认为这里出错的是,你正在使用相等运算符将数据帧与变量进行比较。这很可能是返回的原因,但我没有地方说这是实际原因,因为我还没有完全理解Pyhton力学。==False但是,对我复制您的问题有效的方法如下:我只是使用了:if number in references.values:    print(number + " is registered") #and more functionelse:    print(number + " is not registered") #and more function这是可行的,因为“数据帧类提供了一个成员变量,即数据帧值。它返回数据帧中所有值的 numpy 表示形式。我们可以对这些值使用 in & not in 运算符来检查给定元素是否存在。源
随时随地看视频慕课网APP

相关分类

Python
我要回答