Python 赋值错误前引用的变量
我有一个csv文件,从中读取一些值并计算平均值和标准偏差。我正在使用熊猫来处理我的csv文件。要计算我这样做的意思:Python 赋值错误前引用的变量,python,csv,Python,Csv,我有一个csv文件,从中读取一些值并计算平均值和标准偏差。我正在使用熊猫来处理我的csv文件。要计算我这样做的意思: def mean(filename): csva = pd.read_csv(filename, header =0) ratios = np.array(csva["ratio"]) return ratios[~np.isnan(ratios)].mean() 这个很好用。但是,有一些文件(2/10文件)的标题比率被zr2212替换。如果我在这些文件
def mean(filename):
csva = pd.read_csv(filename, header =0)
ratios = np.array(csva["ratio"])
return ratios[~np.isnan(ratios)].mean()
这个很好用。但是,有一些文件(2/10文件)的标题比率
被zr2212
替换。如果我在这些文件上尝试上述函数,我会得到KeyError:u'no item named zr2212'
。因此,我将代码修改为:
def mean(filename):
csva = pd.read_csv(filename, header =0)
try:
ratios = np.array(csva["ratio"])
except KeyError as e:
if e == "no item named ratio":
ratios = np.array(csva["zr2212"]
return ratios[~np.isnan(ratios)].mean()
但是,我在return
语句中得到赋值前引用的UnoundLocalError:local变量“ratios”错误。我不明白为什么我会在那里出错
if e == "no item named ratio":
这是错误的<代码>e
是一个例外,而不是字符串。
取出if
行,它应该可以工作
这是错误的<代码>e是一个例外,而不是字符串。
取出
if
行,它应该可以工作。这一行中有语法错误ratios=np.array(csva[“zr2212”]
你省略了)
是通过复制过去的吗?这一行中有语法错误ratios=np.array(csva[“zr2212”]
你省略了)
是通过复制过去的吗?这就是问题所在。但是我记得有一个基本的python课程,在那里我们学到了类似的东西,这就是为什么我实际使用它,他可能在寻找e.msg
或e.message
,甚至可能只是str(e)
。如果需要,可以检查异常中的message
字段,但是我认为没有任何必要。如果像这样(如果你做对了)有一个,这是很有意义的。但是,您必须决定在else
情况下应该发生什么。是否要引发
以传播异常?还是另一个?或者将比率设置为空序列?或者返回一些默认值?你必须做点什么,否则你最终会得到你所看到的:比率不存在,你无论如何都要尝试使用它。这就是问题所在。但是我记得有一个基本的python课程,在那里我们学到了类似的东西,这就是为什么我实际使用它,他可能在寻找e.msg
或e.message
,甚至可能只是str(e)
。如果需要,可以检查异常中的message
字段,但是我认为没有任何必要。如果像这样(如果你做对了)有一个,这是很有意义的。但是,您必须决定在else
情况下应该发生什么。是否要引发
以传播异常?还是另一个?或者将比率设置为空序列?或者返回一些默认值?你必须做点什么,否则你最终会得到你所看到的:比率不存在,你无论如何都要尝试使用它。