2016-05-12 12 views
0

ich zwei Werte MC und JT von 2 Tabellen vergleichen müssen:einige Spalten von einigen Tabellen vergleichen Python mit

EID MolIdx TEStart TEEnd TE TZone TBulkBE TBulkAE MC JT zavg vabs vzavg xyd.x xyd.y xydist nnbw vabsprev midhb 
0 370 36700 36800 110 20 36150 37090 0 0 -8.25705 0.219113 -0.000800014 20.8926 41.4347 5.75852 0 4.13067 0 
1 423 17950 18150 210 180 17400 18430 1 0 -4.26426 0.586578 -0.053 77.22 85.2104 22.0534 0 3.551 0 
2 468 41790 42020 240 50 41360 42380 0 0 7.82681 0.181248 -0.00269566 90.0646 92.7698 5.0841 0 4.19304 0 

und

EID MolIdx TEStart TEEnd TE TZone TBulkBE TBulkAE MC JT zavg vabs vzavg xyd.x xyd.y xydist nnbw vabsprev midhb 
0 370 36700 36800 110 20 36150 37090 0 0 -0.846655 0.0218695 2.59898e-05 2.0724 4.1259 0.583259 10 0.412513 0 
1 423 17950 18150 210 180 17400 18780 1 0 -0.453311 0.058732 -0.00526783 7.7403 8.52544 2.19627 0 0.354126 0 
2 468 41790 42020 240 70 41360 42380 0 0 0.743716 0.0181613 -0.000256186 9.08777 9.21395 0.502506 0 0.419265 0 

Ich muss es tun Modul csv. Ich weiß, wie man es unter Verwendung pandas und xlrd, aber unter Verwendung csv nicht weiß.

Wunsch Ausgang:

Number_of_strings MC JT 

und Print-Strings, wobei Werte unterschiedlich sind

import csv 

old = csv.reader(open('old.csv', 'rb'), delimiter=',') 
row1 = old.next() 
new = csv.reader(open('new.csv', 'rb'), delimiter=',') 
row2 = new.next() 

if (row1[8] == row2[8]) and (row1[9] == row2[9]): 
    continue 
else: 
    print row1[0] + ':' + row1[8] + '!=' + row2[8] 
+1

Bitte Ihre Versuche posten. Also mach deine Hausaufgaben nicht für dich. [MVCE] (http://StackOverflow.com/Help/Mcve) –

+0

Ich füge meinen Code zur Frage hinzu –

+1

Ihr Code hat keine gültige Syntax: 'SyntaxError: 'Weiter' nicht richtig in Schleife '. –

Antwort

0

Sie so etwas wie die versuchen können, folgende:

old = list(csv.reader(open('old.csv', 'rb'), delimiter=',')) 
new = list(csv.reader(open('new.csv', 'rb'), delimiter=',')) 

old = zip(*old) 
new = zip(*new) 

print ['%s-%s-%s'%(str(a), str(b), str(c)) for a, b, c in zip(old[0], new[8], old[8]) if b != c] 

Zuerst bekommen wir eine Liste von Listen. zip(*x) wird eine Liste von Listen transponieren. Der Rest sollte einfach zu entziffern ...

Sie können tatsächlich setzen, was Sie innerhalb der Zeichenfolge wollen ...

+0

Warum gibt es 'IndexError: Listenindex außerhalb des Bereichs '? –

+0

Wenn Sie ipython verwenden, drucken Sie 'zip (* old)', um zu sehen, was Sie bekommen. Es ist wahrscheinlich ein kleiner Lesefehler. Ist Ihre Datei kommagetrennt oder durch Leerzeichen getrennt? – ssm

+0

Oder noch besser zuerst "alt" und "neu" drucken, um zu sehen, ob Sie Daten richtig lesen ... – ssm

Verwandte Themen