2014-02-12 193 views
-2

我想從我的csv文件中找到最大值和最小值之間的差異,但我得到了上述錯誤。Python - ValueError:無法將字符串轉換爲浮點數:

我的代碼:

file1 = open ('fileA.csv', 'rb') 
reader1 = csv.reader(file1) 

outfile = open ('fileB.csv', 'wb') 
writer = csv.writer(outfile) 

next(reader1, None) # skip the headers 
for col in reader1: 
    Max1 = max (col[3:6],key = float) 
    Min1 = min (col[3:6], key = float) 
    Data1 = str(float(Max1) - float (Min1)) 
    print Data1 
    col.append (Data1) 
    writer.writerow (col[9]) 
    Max2 = max (col[6:9], key = float) 
    Min2 = min(col[6:9], key = float) 
    Data2 = str(float(Max2) - float(Min2)) 
    col.append (Data2) 
    writer.writerow (col[10]) 



    file1.close() 
    outfile.close() 

錯誤:

Traceback (most recent call last): 
    File "C:\Python27\Percentage_methylation_variation.py", line 13, in <module> 
    Max1 = max (col[3:6],key = float) 
ValueError: could not convert string to float: 

FILEA包含在每一列浮點數。任何關於這個問題的建議以及對我的代碼的其他批評都會有很大的幫助。

非常感謝。

+0

那麼當你創建'outfile'你不關閉你的'fileB'字符串,修復它並看看會發生什麼。 – Ffisegydd

+0

這從語法突出顯而易見,fyi – keyser

+0

如果沒有輸入文件的內容,我們怎麼可能知道發生了什麼。 –

回答

2

檢查什麼值可能會造成您的錯誤(這可能是你有一個空白的) - 做這樣的事情:

for col in reader1: 
    try: 
     Max1 = max(col[3:6], key=float) 
    except ValueError: 
     print '***OOOPS***', col[3:6] 
     break 

然後,你需要找出你的意思用做什麼無效的值...

相關問題