2017-05-12 3 views
0

가져올 두 개의 CSV 파일이 있습니다. 하나의 CSV에서 누락 된 가치가 있습니다. 다른 CSV와 결합해야합니다.한 목록에서 다른 목록으로 값 추가

첫 번째 목록이 salaries =

[['19249-12477', 'P', 'Chris', 'Chris Sale', 'Sale', '54.71', '7', '11800', '[email protected]', 'BOS', 'TAM', '', '', '', ''], 

['19249-5481', 'P', 'Max', 'Max Scherzer', 'Scherzer', '48.29', '7', '11700', '[email protected]', 'WAS', 'PHI', '', '', '', ''], 

['19249-6311', 'P', 'Madison', 'Madison Bumgarner', 'Bumgarner', '38.50', '4', '11000', '[email protected]', 'SFG', 'CIN', '', 'Shoulder', '', '']] 

두 목록처럼이 stats =

[ ['0', 'Dallas', 'Keuchel,', 'HOU', '8', '8', '6', '0', '1.000', '1', '0', '7', '0', '58.2', '37', '12', '11', '6', '14', '50', '1.69'], 

    ['1', 'Ervin', 'Santana,', 'MIN', '7', '7', '5', '1', '.833', '1', '1', '6', '0', '47.0', '21', '9', '9', '6', '16', '37', '1.72'], 

    ['2', 'Jason', 'Vargas,', 'KC', '7', '7', '5', '1', '.833', '0', '0', '6', '0', '44.2', '33', '6', '5', '1', '8', '39', '1.01']] 

처럼 두 번째 모습을 보인다는 서로 다른 길이 있습니다. 목록 2에서 salaries[i][1]salaries[i][7]을 가져와 목록 1과 결합해야합니다.

여기 캐치가 있습니다. 두 목록을 반복하여 이름이 일치하는지 확인해야합니다. 그렇지 않으면 잘못된 값과 잘못된 플레이어가 결합됩니다.

것은 여기 내 코드 지금까지

for name1, name2 in zip(salaries, stats): 
    if name1[2] == name2[1] and name1[4] == name2[2]: 
     stats.append(salaries[1][1]) 



for name1, name2 in zip(salaries, stats): 
    if name1[2] == name2[1] and name1[4] == name2[2]: 
     stats.append(salaries[1][7]) 

입니다하지만 실행할 때이 그것을 한 번 나에게 헤더 값 ['Position']을주는 대신 전체 목록을 반복하고 값을 추가 추가합니다.

이 작업을 실행하면 stats에 값을 추가해야합니다. 추가해야하는 특정 색인을 제공해야합니까?

+0

개체를 재구성하는 것이 좋습니다. 예 : 당신은 "양쪽"이라고 말합니다. 그러나 나는 6 개의 목록을 보았고 그 중 4 개는 할당되지 않았다. – Kanak

+0

둘 다 @Tnerual – tin

+0

목록의 목록입니다. 목록을 그렇게 만드십시오. 단순히 입력 내용을 복사 할 수있는 경우 답변을 얻을 수있는 가능성을 극대화합니다. 혼수 상태가 누락되었습니다. – Kanak

답변

2

목록이 단순히 zip 일 수는 없습니다. 항목의 위치가 일치하지 않습니다. 대신, 두 목록 모두 sort의 이름으로 읽으십시오 (sorting tutorial 참조).

두 파일에 정확히 동일한 플레이어가 포함되어 있다는 것을 알고 있습니까? 그렇다면이 시점에서 목록을 zip 수 있습니다. 그렇지 않은 경우 zip을 완전히 잊어 버리십시오. 대신 stats을 반복합니다. 각 플레이어의 이름은 salaries입니다. 두 개의 필드를 잡고 stats 행에 삽입하십시오. 순서가 걱정되면 예, 어디에 넣을 지 지정해야합니다. insert이 아니라 append을 사용해야합니다.

쉬운 방법입니다. 실행 시간 (예 : 프로 스포츠 역사상 모든 플레이어)이 걱정된다면 업데이트를 수행하는 더 빠른 방법이 있습니다. 1500 명의 플레이어 만 걱정할 필요가 없습니다. 두 목록을 모두 읽고 N 제곱 업데이트를 수행하고 새 파일을 작성하십시오.

관련 문제