NameError: name 'qtd' is not defined when I try to make a if 出现

NameError: name 'qtd' is not defined appears when i try to make an if

提问人:Eduardo Santos Vieira 提问时间:7/19/2023 最后编辑:Eduardo Santos Vieira 更新时间:7/20/2023 访问量:46

问:

我正在尝试找出值在工作表中的位置,并将该值存储在变量中。

list = df['Quantidade de Cotas'].tolist()
qtd = 2136252.54442995
print(qtd)

变量的值为 2136252.54442995,因此定义

> 2136252.54442995

但是,如果我尝试执行一个 if

res = [i for i,j in enumerate(list) if j == qtd]

print(res)

出现此错误,表示未定义变量

> NameError: name 'qtd' is not defined

如果我运行完全相同的代码,但不是变量,而是输入她的值,则 if 有效并返回列表中的正确位置

list = df['Quantidade de Cotas'].tolist()
qtd = 2136252.54442995
print(qtd)

> 2136252.54442995

res = [i for i,j in enumerate(list) if j == 2136252.54442995]

print(res)

> [0]

有人可以帮我使这段代码以这种方式工作吗?

list = df['Quantidade de Cotas'].tolist()
qtd = 2136252.54442995
res = [i for i,j in enumerate(list) if j == qtd]

print(res)

> [0]
Python pandas if-statement nameerror 枚举

评论

0赞 Michael Butscher 7/19/2023
尝试创建一个 MRE,并在问题中将其显示为格式正确的文本
2赞 Craicerjack 7/19/2023
qtd未在上面代码中的任何位置定义?变量的值是 2136252.54442995,所以它被定义 - 它在哪里定义?
0赞 Eduardo Santos Vieira 7/19/2023
qtd 在上面的代码中定义,问题不在于变量不存在,而在于它无法读取。
0赞 Craicerjack 7/20/2023
为什么读不懂?您似乎遗漏了一些关键信息/上下文
0赞 Eduardo Santos Vieira 7/21/2023
代码是通过接口初始化的,但我最终发现问题出在tkinter(用于创建接口)。出于某种原因,在没有接口的情况下直接运行代码时,它可以工作。我无法找出为什么会发生这种情况,我正在分析它可能是什么

答:

0赞 Yousef khaled 7/20/2023 #1
import pandas as pd

df = pd.DataFrame({'Quantidade de Cotas': [10, 20, 10, 40, 50]})

list = df['Quantidade de Cotas'].tolist()
# qtd = 2136252.54442995
qtd = 10

res = [i for i,j in enumerate(list) if j == qtd]
print(res)

输出:[0, 2]

您的代码是正确的,但请确保在列表推导式中使用它之前进行定义。'qtd'