2017-11-14 3 views
1

두 가지 목적으로 변환해야하는 CSV 파일이 있습니다. 이벤트 소책자 인쇄 (시간으로 분류 날 현명한 일정) 16/11/2017 (목) 시간, 보컬/바이올린/Mrudagam (이벤트 '보컬'인 경우) 시간, 댄스/바이올린 파이썬을 사용하여 여러 형식으로 CSV 변환

  1. /Mrudangam (이벤트는 '댄스'인 경우) 시간, 드라마

날짜, 시간, 이벤트, 보컬, 바이올린 중포 기지 업로드 (JSON)에 대한

  • (이벤트 '드라마'인 경우) Mrudangam, Ghatam, Kanjira, Bharata natyam, Dance, Flute, Drama

    모든 열에 모든 값이 들어있는 것은 아닙니다. 예를 들어 이벤트가 '음성'이고 '보컬'만있는 경우 '바이올린'과 '뮤 던망'에 값이 있습니다.

    나는, 그래서 같이

    def form_event_string(event): 
        fevent="" 
        print("formatting event: " + event['Event']) 
        if event['Event'] == 'VOCAL': 
         fevent = "{Vocal}/{Violin}/{Veena}/{Mrudangam}/{Ghatam}/{Kanjira}/{Morsing}/{Flute}/{Other}/{Venue}".format(**event) 
        elif event['Event'] == 'VIOLIN': 
         fevent = "{Violin}/{Mrudangam}/{Ghatam}/{Kanjira}".format(**event) 
        elif event['Event'] == 'VEENA': 
         fevent = "{Veena}/{Flute}/{Violin}/{Mrudangam}/{Ghatam}/{Kanjira}/{Morsing}/{GottuVadhyam}".format(**event) 
        elif event['Event'] == 'GHATAM': 
         fevent = "{Ghatam}/{Violin}/{Mrudangam}/{Kanjira}/{Morsing}".format(**event) 
        else event['Event'] == 'BHARATANATYAM': 
         fevent = "{Bharatanatyam}".format(**event) 
    return fevent 
    

    을 모든 행을 처리하고 CSV 파일에이 문자열을 추가 유지 한 후 CSV 파일을 읽고

    with open(args.eventfile,'r') as csvfile: 
        eventreader = csv.DictReader(csvfile, delimiter=",") 
        #sortedlist = sorted(eventreader, key=lambda row:(row['Date'],row['Time']), reverse=False) 
        sortedlist = sorted(eventreader, key=lambda each_dict: (datetime.strptime(each_dict['Date'], '%m/%d/%Y'), 
              datetime.strptime(each_dict['Time'], '%I:%M %p'))) 
    

    를 사용하여 동일한를 정렬합니다.

    내 질문은 -이 작업을 수행하는 다른 방법이 있습니까? 어떤 도움을 주셔서 감사합니다.

  • 답변

    0

    훨씬 더 좋은 방법이 있습니다! 팬더! csv를 데이터 프레임으로 변환하면 new_column = df [ 'column']. apply (function)를 사용하여 사용자 정의 함수를 사용하여 열을 만들 수 있습니다. 그런 다음 df를 json으로 저장할 수 있습니다. http://pandas.pydata.org

    관련 문제