Python 赋值错误前引用的变量

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替换。如果我在这些文件

我有一个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
替换。如果我在这些文件上尝试上述函数,我会得到
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
情况下应该发生什么。是否要引发
以传播异常?还是另一个?或者将比率设置为空序列?或者
返回一些默认值?你必须做点什么,否则你最终会得到你所看到的:
比率不存在,你无论如何都要尝试使用它。