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']
    
    • 이 방법으로 코드 고쳐서 해결이 된 것 같습니다. 감사합니다 ! 알 수 없는 사용자 2017.8.13 21:57
  • 더 효율적인 방법은 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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)