2016-07-21 10 views
-3

Ich möchte alle zwei Felder von Zeilen in Spalten mit zwei Zeilen transformieren. Und Schleife diese Transformation für jede ZeileTransformiere alle zwei Felder von Zeilen in Spalten, die zwei Zeilen enthalten

Dies ist der Eingang:

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 

Dies ist die gewünschte Ausgabe:

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 

-Header und die ID-Spalte sind nur zur Verdeutlichung angegeben, und sind nicht erforderlich, in der Ausgang

+3

Plese [Bearbeiten] Ihre Frage und zeigen Sie uns, was Sie versucht haben. – martineau

+2

Was ist das? eine Textdatei? ein Pandas DataFrame? eine Reihe von Variablen? Und welche Ausgabe möchten Sie? eine Datei? ... Siehst du, wohin ich damit gehe? – nico

Antwort

0

Angenommen, Sie verändern die Registerkarte Klartext begrenzt, die in der Datei und Ihre Datengröße nicht ändern, einfacher Ansatz ist:

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

Ich würde mit diesem Code gehen lol. Ich gab eher eine übertriebene Idee, wie es zu tun ist, anstatt eine Implementierung –

+0

Einige Fehler behoben. – user3036878

0

Sie können den Eingang durchschleifen und dann aufteilen, vielleicht etwas entlang der Linien dieser

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 

Eigentlich habe ich diesen Code nicht ausgeführt, aber die Idee ist da, also manipuliere das wie nötig.