2016-07-21 3 views
-3

두 개의 행 필드를 두 개의 행을 포함하는 열로 변환하고 싶습니다.두 개의 행 필드를 두 개의 행을 포함하는 열로 변환하십시오.

id pop001 pop002 pop003 
id1ref 6 2 5 
id1alt 274 93 95 
id2ref 202 220 73 
id2alt 0 0 0 
id3ref 166 0 114 
id3alt 159 173 90 

헤더 및 ID 컬럼은 해명을 나타낸 것으로 요구하지 :

id refpop001 altpop001 refpop002 altpop002 refpop003 altpop003 
id1 6 274 2 93 5 95 
id2 202 0 220 0 73 0 
id3 166 159 0 173 114 90 

이 원하는 출력 : 루프 각 행

이이 변환은 입력 출력

+3

Plese [편집] 당신의 질문은 당신이 시도 것을 우리에게 보여줍니다. – martineau

+2

이것은 무엇입니까? 텍스트 파일? 팬더의 DataFrame? 다양한 변수들? 그리고 어떤 출력을 원하십니까? 파일? 너 어디서 이걸 볼 건데? – nico

답변

0

는 탭 파일에 일반 텍스트를 구분하고 데이터 크기가 변경되지 않는 변환하는 감안할 때, 간단한 방법은 다음과 같습니다

lines=open('file_or_stream_name.txt','r').readlines(); 

newLines=[] 
newLines.append('\t'.join('id','pop001','pop002','pop003')) #header line 
for line in lines[1:]: 
    elements=line.split('\t') 
    newLine=[] 
    newLine.append(elements[0]+'ref') 
    newLine.extend(elements[1::2]) 
    newLines.append('\t'.join(newLine)) 

    newLine=[] 
    newLine.append(elements[0]+'alt') 
    newLine.extend(elements[2::2]) 
    newLines.append('\t'.join(newLine)) 

newText='\n'.join(newLines) #or '\r\n'.join(...), if you're in Windows 
+0

나는이 코드와 함께 갈 것이다. 나는 구현보다는 오히려 그것을하는 방법에 대한 아치 아이디어를 더 많이 주었다. –

+0

몇 가지 실수를 수정했다. – user3036878

0

입력을 반복 한 다음이 라인을 따라 무언가를 나눌 수 있습니다.

int i = 0 
for row in input: 
    row_array = row.split() 
    i = i+=1 
    ref = row_array[0] + " " + row_array[2] + " " + row_array[4]] 
    alt = row_array[1] + " " + row_array[3] + " " + row_array[5] 

    print "id" + i +"ref " + ref 
    print "id" + i + "alt" + alt 

실제로이 코드를 실행하지 않았지만 아이디어가 있으므로 필요에 따라이 코드를 조작하십시오.

관련 문제