2010-04-09 2 views
1

기본적으로 데이터 행 뒤에 행이 있습니다.여러 열 기준에 따라 csv에서 유일한 행만 추출 하시겠습니까?

이벤트 | 개최지 | 날짜 | 일부 | 기타 | 열 | 여기에 |

동일한 장소와 날짜에서 중복 이벤트가 많이 발생합니다.

그래서 이벤트, 장소, 날짜와 일치하는 유일한 이벤트로 끝내고 싶습니다.

이게 Excel에서 가능한 방법인가요? VBA? 또는 일부 옵션에 대해 잘 모릅니다?

감사합니다.

는 UPDATE :

난 그냥 아마 대신 데이터베이스로 데이터를 가져올 것 중복

답변

0

가장 쉬운 방법은 제거> DATA- 갔다. 에 관계없이 스프레드 시트로의 생각의

select event, venue, date 
    from event_table 
    group by event, venue, date 

, 엑셀 정말 하지 좋은 데이터베이스 관리자입니다 : 그 시점에서, (예를 들어) SQL 쿼리 뭔가처럼 될 것입니다.

1

TxtSushi을 사용하면 Jerry의 선택을 CSV 파일에서 직접 실행할 수 있습니다. 따라서 :

tssql -table event_table events.csv \ 
'select event, venue, date 
    from event_table 
    group by event, venue, date'

나는 * NIX 도구로 광고하지만 창에서도 작동합니다.

0

당신이 * nix에서 스크립트에있는 경우, 지금까지 AWK

awk -F"|" '{a[$1$2$3]=$0}END{ for(i in a) print i,a[i]}' csv 
0

큰 응답을 사용할 수 있습니다.

스크립팅 언어를 배우십시오.
모든 스크립팅 언어. 파이썬에서 당신이 원하는 일을

한 가지 방법 :

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import csv 

def main(): 
    FIN = 'in.csv' 
    with open(FIN, 'r') as fin: 
     col_name_reader = csv.reader(fin) 

     # assuming the first line of your csv file has column names 
     col_names = col_name_reader.next() 
     csv_dict_reader = csv.DictReader(fin, col_names) 

     uniq_events = set(tuple((row['event'], row['venue'], row['date']) 
      for row in csv_dict_reader)) 

     print uniq_events 

if __name__ == "__main__": 
    main() 

과 같이 채워 테스트 파일을 사용하여 다음과 :

 
event,venue,date 
an_event,a_venue,2010-01-01 
an_event,a_venue,2010-01-01 
an_event,a_venue,2010-01-01 
another_event,another_venue,2010-01-02 
another_event,another_venue,2010-01-02 

우리는 얻을 :

set([('an_event', 'a_venue', '2010-01-01'), 
    ('another_event', 'another_venue', '2010-01-02')]) 

행운을 빕니다!

관련 문제