NameError: name 'air' is not defined
NameError: name 'air' is not defined
我是python初学者,情况是:
在test.py中:
import numpy as np
import pandas as pd
from numpy import *
def model(file):
import numpy as np
import pandas as pd
data0 = pd.ExcelFile(file)
data = data0.parse('For Stata')
data1 = data.values
varnames = list(data)
for i in range(np.shape(data)[1]):
var = varnames[i]
exec(var+'=np.reshape(data1[:,i],(2217,1))')
return air
空气是'varnames'
之一
现在我在 jupyter notebook运行 中 :
file0 = 'BLPreadydata.xlsx'
from test import model
model(file0)
我得到的错误是:
NameError: 名称 'air' 未定义
编辑:我试图确定错误,它实际上来自
exec(var+'=np.reshape(data1[:,i],(2217,1))')
不知何故,当我调用该函数时它不起作用,但当我 运行 它在函数外部时它确实起作用。
注意:
有人在 MATLAB 中做过:
vals = [1 2 3 4]
vars = {'a', 'b', 'c', 'd'}
for i = vals
eval([vars{i} '= vals(i)'])
end
您应该在函数中再使用一个 for 循环来迭代变量名并查找 'air,如果找到则将其存储在另一个变量和 return 该变量中。
试试这个。
for j in varnames:
if j=='air':
c=j
然后return c.
return c
我在阅读 exec(.) 文档并猜测后找到了答案...
air其实是在exec(.)之后保存为局部变量...
因此,而不是
return air
放
return locals()['air']
感谢大家的帮助。
我是python初学者,情况是:
在test.py中:
import numpy as np
import pandas as pd
from numpy import *
def model(file):
import numpy as np
import pandas as pd
data0 = pd.ExcelFile(file)
data = data0.parse('For Stata')
data1 = data.values
varnames = list(data)
for i in range(np.shape(data)[1]):
var = varnames[i]
exec(var+'=np.reshape(data1[:,i],(2217,1))')
return air
空气是'varnames'
之一现在我在 jupyter notebook运行 中 :
file0 = 'BLPreadydata.xlsx'
from test import model
model(file0)
我得到的错误是: NameError: 名称 'air' 未定义
编辑:我试图确定错误,它实际上来自
exec(var+'=np.reshape(data1[:,i],(2217,1))')
不知何故,当我调用该函数时它不起作用,但当我 运行 它在函数外部时它确实起作用。
注意: 有人在 MATLAB 中做过:
vals = [1 2 3 4]
vars = {'a', 'b', 'c', 'd'}
for i = vals
eval([vars{i} '= vals(i)'])
end
您应该在函数中再使用一个 for 循环来迭代变量名并查找 'air,如果找到则将其存储在另一个变量和 return 该变量中。
试试这个。
for j in varnames:
if j=='air':
c=j
然后return c.
return c
我在阅读 exec(.) 文档并猜测后找到了答案...
air其实是在exec(.)之后保存为局部变量...
因此,而不是
return air
放
return locals()['air']
感谢大家的帮助。