2012-08-03 2 views
3

엑셀 스프레드 시트를 조작하기위한 파이썬 스크립트를 작성하려고합니다. 그 비슷한 이름의 경우엑셀 시트를 조작하기위한 파이썬 스크립트

Gene  chrom strand TSS  TES   Name 

NM_145215 chr5  +  135485168 135488045 Abhd11 

NM_1190437 chr5  +  135485021 135488045 Abhd11 

NM_1205181 chr14 +  54873803 54888844 Abhd4 

NM_134076 chr14 +  54878906 54888844 Abhd4 

NM_9594  chr2  +  31615464 31659747 Abl1 

NM_1112703 chr2  +  31544075 31659747 Abl1 

NM_207624 chr11 +  105829258 105851278 Abl1 

NM_9598  chr11 +  105836521 105851278 Ace2 

NM_1130513 chrX  +  160577273 160626350 Ace2 

NM_27286 chrX  +  160578411 160626350 Ace2 

(열 6), 나는 적어도 TSS와 전체 행을 검색 할 : 샘플 데이터 되 잖아, 경우

은 가정하자. 예 : 처음 2 행 -Ahhd11 이름의 경우 TSS 이후 두 번째 행을 내 결과에 저장하려고합니다. 135485021 < 135485168. 동일한 이름을 가진 모든 세트에 대해 이렇게 설정하십시오.

모든 아이디어와 의견에 감사드립니다.

+0

인가? Excel이 XLS 또는 XLSX라면? – Mark

+1

지금까지 해봤습니까? 입력 형식에 관계없이 파일을 읽고 Name을 키로 사용하여 사전을 만든 다음 행에 최소값을 유지합니다. 또한 출력을 원하는대로 지정하지 않았습니다. . . – ernie

+0

이 작업에는 다음 세 가지 방법이 있습니다. 1. Excel 파일을 .xls (x) 대신 .csv로 저장해야합니다. 그러면 Python에서 기본 제공 csv 모듈을 사용할 수 있습니다. 2.컴퓨터에 Excel을 설치 한 다음 PyCOM (Windows)/appscript (Mac)를 사용하여 작업을 수행하십시오. 3. 아무 것도 요구하지 않고 .xls (x) 파일을 구문 분석하기위한 Python 코드를 직접 작성하십시오 (전체 형식을 구문 분석하지 않거나 LibreOffice 또는 다른 프로젝트에서 코드를 사용 및 배치하지 않을 수도 있음). 그래서, 1 또는 2 중 어느 것이 당신을 위해 일할 것입니까? – abarnert

답변

4

입력

내가 CSV 파일로 엑셀 파일을 저장 한 다음 csv module를 사용하여 파이썬에로드 할 수있는 경우.

다른 방법으로는 xlrd module for reading excel files을 사용할 수 있습니다.이 기능을 사용하지는 않았지만 그것에 대해 많이 알지 못합니다.

openpyxl은 Excel 파일을 구문 분석하는 데 사용할 수있는 추가 옵션입니다 (단, 또 다른 dunce 만 사용).

조작

어니의 아이디어는 가능한 것, 그리고 다음과 같이 나는 그것을 구현하는 것입니다. 사용하여 읽을 linesreadfromfile이 목록의 목록이라고 가정 csv.reader 각 목록 요소는 당신 제공 파일의 해당 행의 구분 항목에 해당하는 값 목록,

finaldict = {} 
for row in linesreadfromfile: 
    if finaldict.has_key(row[5]): 
     if finaldict[row[5]][3] > row[3]: 
      finaldict[row[5]] = row 
    else: 
     finaldict[row[5]] = row 
+2

어떤 이유로 사용자가 .csv 형식으로 파일을 요구하거나 (또는 ​​해당 형식으로 보존 할 수없는 정보가 필요하지 않는 한) 가장 확실한 답변입니다. – abarnert

+1

+1은 xlrd 모듈을 언급합니다. Excel 파일을 읽는 데이 파일을 사용 했으므로 작업하기가 쉽습니다. 추천. – Valdogg21

+2

Openpyxl도 매력처럼 작동합니다. –

0

당신은 IronSpread를 사용할 수있다 즉, 파이썬 콘솔과 파이썬에서 이와 같은 액션을 스크립팅하는 방법. 또한 정상적인 Excel 기능으로 사용할 수있는 UDF를 지원합니다.

+0

OP가 윈도우에 있고 엑셀이 있다고 가정하면 ... 또는 IronSpread는 '와인'으로 지원됩니다. (그리고 OP는 뛰어납니다.) 엑셀을 사용하지 않고도 작업 할 수있는 파일을 제공 할 수있었습니다. – jmetz

2

내가 mutzmatron에 동의하고 xlrd 모듈을 추천 할 것입니다. 다음은 간단한 예입니다.

스펙 (전체 행, 특정 값 등)을 저장해야하는 것을 분명히 변경하십시오. 이 정말 엑셀 파일이나 묘사 텍스트 파일

--- 편집 ---

# If this 'Name' is new, save this line 
    if name not in abc.keys(): 
    abc[name] = {'tss': tss, 'line': line} 

    # Else, if this 'Name' is not new and the TSS is less, keep this new line 
    elif tss < abc[name]['tss']: 
    abc[name]['line'] = line 
+0

나는 이것도 같이 갈 예정이었다. (예를 들어'abc [name] <...'을 사용하지 말고 OP가 전체 라인을 유지하기를 원할 때' 최소 기능 (분도 아니고 OP가 요청한 최대 값이 아님) – jmetz

+1

OP의 정확한 사양을 반영하도록 편집되었습니다 (죄송합니다. – Valdogg21

관련 문제