2014-09-18 55 views
0

我有一個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文件),其中標頭ratio被替換爲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 variable 'ratios' referenced before assignment錯誤。我沒有得到它爲什麼我得到一個錯誤

+0

你在這行有一個語法錯誤'比率= np.array(csva [「zr2212」]'你省略')'是通過複製過去嗎? – Kasramvd 2014-09-18 18:58:41

回答

4
if e == "no item named ratio": 

這是錯誤的。 e是一個例外,而不是一個字符串。 取出if行,它應該工作。

+0

這是問題所在。不過我記得一個基本的python類,在這裏我們學習了這樣的東西,這就是爲什麼我用它 – letsc 2014-09-18 19:00:15

+0

實際上,他可能正在尋找'e.msg'或'e.message',甚至可能只是'str(e)'。 – 2014-09-18 19:00:38

+1

如果你願意,你可以在異常中檢查'message'字段,但我不認爲有任何需要。 – khelwood 2014-09-18 19:01:01

相關問題