CSV 파일에 불필요한 열이 포함되어있는 경우, 필요한 열만 필터링하여 활용
- 열의 인덱스 값을 사용하는 방법
- 열의 헤더를 사용하는 방법
열의 헤더를 사용해 특정(관심) 열을 필터링
- 관심있는 열 헤더를 쉽게 식별가능
- 여러개의 입력 파일을 처리할 때 열의 헤더는 같지만 열의 위치가 입력 파일에 따라 다를 때
다음 예제 코드는 [CSV] 열의 인덱스 값을 사용하여 특정열을 선택 에서와 동일하게 Name 및 BOD, TN, T-P열만 사용하기 위한 필터링을 헤더명을 이용해 수행
- 코드설명 -
7 selected_column_name = ['Name', 'BOD', 'T-P', 'TN']
8 selected_column_index = [ ]
7행
- 관심있는 헤더명이 들어있는 리스트변수(selected_column_name) 생성
8행
- 뒤에서 관심열의 인덱스값이 들어갈 리스트변수(selected_column_index) 생성
14 next(freader)
15 header = next(freader)
16 for index_value in range(len(header)):
17 if header[index_value] in selected_column_name:
18 selected_column_index.append(index_value)
19 print(selected_column_name)
20 fwriter.writerow(selected_column_name)
14행
- freader객체에 next()함수를 사용하여 헤더에서 사용되지 않는 행 삭제
15행
- freader객체에 next()함수를 사용하여 헤더에서 사용되는 행을 header 리스트변수로 읽어옴
16행
- header 리스트변수로 읽어온 헤더의 인덱스 값에 대해 반복문 수행
17행
- if문과 리스트 인덱싱을 통해 각 열의 헤더가 관심 헤더명과 동일한 값인지 판별
- header[index_value]가 selected_column_name과 같다면 18행 수행 그렇지 않다면 for문으로...
18행
- 17행에서 판별한 값이 포함되어있는 index_value값을 selected_column_index리스트 변수에 추가
19, 20행
- 관심있는 헤더를 화면과 파일로 출력
21 for row_list in freader:
22 row_list_output = []
23 for index_value in selected_column_index
24 row_list_output.append(row_list[index_value])
25 print(row_list_output)
26 fwriter.writerow(row_list_output)
21행
- 헤더를 제외한 CSV파일의 값에 대해 for문 수행
22행
- 포함하려는(관심있는)행의 데이터 값을 저장할 빈 리스트(row_list_output) 생성
23행
- selected_column_index의 값을 반복
24행
- 23행의 인덱스 값에 해당하는 열의 데이터 값을 row_list_output에 추가
25, 26행
- row_list_output의 값을 화면 및 파일에 출력
(*) 출력파일 로 설정한 r_filtering_by_column_name.csv를 통해 결과 확인
(*) 소스코드 파일 첨부(csv파일은 [CSV] 파일 읽고 쓰기(2) 에...)
'Python' 카테고리의 다른 글
[CSV] 헤더 추가하기 (0) | 2019.01.07 |
---|---|
[CSV] 행의 연속선택 (0) | 2018.12.12 |
[CSV] 열의 인덱스 값을 사용하여 특정 열을 선택 (0) | 2018.11.27 |
[CSV] 패턴, 정규 표현식을 활용한 필터링 (0) | 2018.11.26 |
[CSV] 특정 집합의 값을 포함하는 행의 필터링 (0) | 2018.11.24 |