2017-10-03 2 views
0

대용량 데이터 파일을 약간 편집하고 있습니다. 나는 어떤 컬럼 (이 경우 컬럼 8)의 값이 여러 라인에서 같은 값을 가지는지 확인하고, 만약 그것이 "multiplicity"변수와 같은 양의 라인에 도달하면, 나는 그 라인들을 새로운 라인에 저장하고있다. 정렬. 그러나이 금액에 도달하지 않은 경우 도달 한 행 수 (예 : 내 "개수"변수)에 대해 확인 된 행에 대해 다른 열 (5 열)의 값을 변경하려고합니다. 내 코드가 작동하지 않는 곳입니다.목록의 특정 열의 값 변경

multiplicity=7 
complete_systems=[]  
for i in range(len(matching_rows)): 
    count = 0 
    value=matching_rows[i][8] 
    for j in range(len(matching_rows)): 
     if matching_rows[j][8]==value: 
      count+=1 
    if count ==multiplicity: 
     complete_systems.append(matching_rows[i]) 
    else count for matching_rows[i][5] in matching_rows: 
     complete_systems.append(matching_rows[i]) 

여기에서 matching_rows는 내 배열입니다. 예제 행 :

[memmap(['K00806.02', '60.32494216', '12.19', '89.83', '0.2998', '5', '22', 
     '0.8670', '0.9860', '347.20'], 
     dtype='<U12'), 
memmap(['K00806.01', '143.2063047', '8.9', '89.83', '0.5336', '5', '9', 
     '0.8670', '0.9860', '138.80'], 
     dtype='<U12'), 
memmap(['K00232.05', '56.2590881', '2.22', '89.97', '0.287', '5', '22', 
     '1.1910', '0.9950', '29.70'], 
     dtype='<U12'), 

이렇게 코드는 잘못된 구문 오류 만 반환하는 ELSE 부분까지 작동합니다. 나는 프로그래밍에 대한 많은 경험이 없기 때문에 몇 가지 힌트를 좋아할 것입니다!

답변

0

해야

matching_rows[i][5] in matching_rows: 

를 원했다!

if count ==multiplicity: 
     complete_systems.append(matching_rows[i]) 
else: 
     matching_rows[i][5]=count 
     complete_systems.append(matching_rows[i]) 
0
else count for matching_rows[i][5] in matching_rows: 

은 파이썬에서 의미가 없습니다. 당신은 아마

elif count for matching_rows[i][5] in matching_rows: 

하지만

count for matching_rows[i][5] in matching_rows: 

여전히 파이썬에서 의미가 없습니다 의미

else: 

: 우선, 그렇지 않으면 이후에 콜론이 필요합니다. 당신은 아마 그래서 완전한 문장이이 일을 한 것 같다

elif matching_rows[i][5] in matching_rows: 
+0

아, 이제이 경우 'for'는 for 루프를 시작합니다. 어떤 이유로 나는 값을 대체하는 데 사용될 수 있다고 생각했다. (match_rows ... line 5의 "i"줄에있는 값을위한 "count"와 같이). 당신의 대답을 염두에두고 다른 접근법을 시도해보십시오! –

관련 문제