Python 또는 Excel 에서 행으로 된 파일들을 열로 변환하는법
조회수 2898회
Python 또는 Excel 에서 행으로 된 파일들이 있습니다.
예를 들어 :
이름 김준
이름 이유
이름 김파이
성별 남
성별 남자
위와 같이 기록된 파일을
이름 김준 이유 김파이
성별 남 남자
와 같이 변경할 수 있는 방법이 있을까요 ? 찾아 보았는데 딱히 나오지 않아서 질문해봅니다. 김준, 이유, 남 과 같은 값들을 컬럼으로 만들어서 0, 1로 표현하는 방법말곤 나오지 않습니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
itertools 모듈을 사용하면 편합니다.
''' sample.csv 의 내용은 아래와 같습니다. name,aaaa name,bbbb name,ccc age,10 age,20 age,30 ''' import csv import itertools with open('d:/sample.csv', 'r') as f: reader = csv.reader(f) for key, group in itertools.groupby(reader, lambda i:i[0]): print('{} => {}'.format(key, list(map(lambda i:i[1], group)))) name => ['aaaa', 'bbbb', 'ccc'] age => ['10', '20', '30']
-
더 효율적인 방법은 pandas 에 dataframe를 사용하면 피봇을 만들기 좋습니다만 일단은 기본 모듈로 만든 예제입니다.
import csv import itertools with open('d:/sample.csv', 'r') as f: reader = csv.reader(f) keys, vals = set(), [] for key, group in itertools.groupby(reader, lambda i:i[0]): keys.add(key) vals.append(list(map(lambda i:i[1], group))) print('\t'.join(keys)) for name, val in zip(vals[0], vals[1]):print('{}\t{}'.format(name, val)) name age aaaa 10 bbbb 20 ccc 30
- name 과 age 등의 필드명을 하나의 컬럼으로 받고 value 들을 옆으로 받으려면 lambda 뒤의 값을 바꾸면 되나요? 알 수 없는 사용자 2017.8.13 12:06
- . 알 수 없는 사용자 2017.8.14 04:18
댓글 입력