gpt4 book ai didi

python - 在excel中检查匹配数据的函数一直返回false

转载 作者:行者123 更新时间:2023-12-04 20:25:46 25 4
gpt4 key购买 nike

我想使用python创建一个函数来检查一个数字(基于文件字符串获得)是否存在于使用pandas的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:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我查了一下,发现(据我所知)发生这种情况是因为函数不够具体,可以返回真或假,然后我尝试使用 .any.allreferences 之后在函数中,但不知何故,即使该数字确实存在于 excel 中,它也会不断返回 false。

当我尝试使用 print(number == references) 进行检查时它会显示一个列表,它会告诉我在哪里找到匹配的数据,但不知何故,当我试图用它制作一个函数时,它一直返回 false。

引用 excel 仅在单元格 A1 中包含一个“标题”,其余的只是其中注册的数字。

我试着寻找它,发现了一些关于 pandas.DataFrame.isin 的东西但我不明白如何把它作为一个函数,我不认为我可以在我的问题上使用它。

如果这是一个相当简单的问题,我很抱歉,但不知何故我找不到答案,而且我是 python 新手,英语不是我的第一语言。

最佳答案

我对 Python 还是比较陌生,但让我思考一下:

  • 您正在从 excel 文件名中提取一个变量,比如说 1234ABCD来自 TestFile_1234ABCD_excel.xlsx 之类的东西.正确的?
  • 然后你将拉入一个名为 C:/example.xlsx 的文件的内容。进入数据框,对吗?
  • 最后,您正在检查是否在某处找到了变量 数据框?

  • 所以,我认为这里出了问题的是您正在使用 == 将数据帧与变量进行比较。这是相等运算符。这很可能是返回 False 的原因。但我无法说这是真正的原因,因为我还没有完全理解 Pyhton 力学。
    但是什么 为我复制您的问题的工作如下;我只是使用:
    if number in references.values:
    print(number + " is registered") #and more function
    else:
    print(number + " is not registered") #and more function
    这是因为“数据框类提供了一个成员变量,即 DataFrame.values。它返回数据框中所有值的 numpy 表示。我们可以对这些值使用 in & not in 运算符来检查给定元素是否存在。 " Source

    关于python - 在excel中检查匹配数据的函数一直返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850975/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com