2014-02-12 3 views
1

CSV 파일에서 숫자 집합에서 최대 및 최소값을 찾으려고합니다. 내 코드는 일부 행에 대해 Max 함수의 잘못된 번호를 계속 반환합니다.파이썬에서 최대 함수가 잘못된 결과를 반환합니다.

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

    next(reader1, None) # skip the headers 
    for col in reader1: 
     print (col[3:6]) 
     Max1 = max (col[3:6]) 
     Min1 = min (col[3:6]) 
     print 'The maximun is:', Max1 
     print 'The minimum is:', Min1 
     print col[6:9] 
     Max2 = max (col[6:9]) 
     Min2 = min(col[6:9]) 
     print 'The maximun is:', Max2 
     print 'The minimum is:', Min2 

    file1.close() 

내 출력의 exmaple :

['82 .61 ', '92 .86', '50 .00 '] 항목 최대 인 : 92.86 최소이다 : 50.00

여기 내 코드 ['86 .21 ','100.00 ', '96 .30']

항목 최대입니다 96.30 최소입니다 : 100.00

내가 잘못 무엇을했는지 모르겠습니다. 몇 가지 조언을 주시면 감사하겠습니다.

감사합니다.

+3

숫자 데이터가 아닌 문자열을 비교합니다. 사용 :'max (col [3 : 6], key = float)' –

+0

대단히 고마워. Chram처럼 일 했어! – user3302763

답변

3

목록 요소는 문자열입니다. 당신은 전적으로 비교 피하기 위해 float로 변환해야합니다 (알파벳, '100' < '2'1 < 2 때문에 한 번에 하나 개의 문자)

intcol = [int(x) for x in col] 
Max1 = max(intcol[3:6]) 
Min1 = min(intcol[3:6]) 

실제로 문자열을 원하는 않는 한,이 경우 새 목록을 확인하지 않습니다 key=float을 함수에 전달하십시오.

Max1 = max(col[3:6], key=float) 
관련 문제