我想使用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 文件名中提取变量,假设从 类似的东西中提取。右?
1234ABCD
TestFile_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 运算符来检查给定元素是否存在。源
添加回答
举报
0/150
提交
取消