2016-04-19 9 views
0

Ich möchte den Wert der Spalte 4 aus Spalte 3 (ihre beide Ganzzahlen), das ist, was ich habe.csv - nehmen Sie Daten von einer Spalte aus einer anderen

with open('CLASSES.csv', 'rt')as f: 
    reader=csv.reader(f) 
    people=[] 
    for column in reader: 
     people.append(column[0:8]) 

difference = [x[3] for x in people] - [x[4] for x in people] 
print(difference) 

erhalte ich die Fehler Typeerror: nicht unterstützte Operandtyp (e) für: - ‚Liste‘ und ‚Liste‘ wenn diese. Ich weiß, warum ich den Fehler bekomme, aber ich kann mir keinen Weg vorstellen.

Jede Hilfe wäre großartig!

+0

'Unterschied = [x [3] - x [4] für x in Menschen]' –

+0

** nicht unterstützte Operandentyp (en) für -: 'str' und 'str' ** ist der Fehler, den ich bei der Verwendung bekomme dass coding @PeterWood –

+0

Sie haben Zeichenfolgen müssen Sie in Ganzzahlen konvertieren: 'int (x [3]) - int (x [4])' –

Antwort

1

Wie @Peter Wood in dem Kommentar sagte, müssen Sie innerhalb einer Liste Verständnis zu subtrahieren, nicht zwei Listen Verständnis tun, da dies in list - list resultiert. Auch müssen Sie in Zahlen konvertieren.

difference = [int(x[3]) - int(x[4]) for x in people] 

Wenn Sie Sachen wie dies tun wollen, sind Sie wahrscheinlich besser dran numpy oder sogar pandas.

Mit numpy und es ist genfromtxt Funktion:

import numpy as np 
people = np.genfromtxt('CLASSES.txt', delimiter=',', dtype=None) 
difference = people[:, 3] - people[:, 4] 

Hier people wird ein zweidimensionales numpy Array, dieser erste Index über die Reihen gehen, die zweite über die Spalten [:, 3] jede Zeile der Dritteln Spalte nimmt.

Die dtype=None Option lässt genfromtxt automatisch den Typ für jede Spalte entscheiden, Standard ist float.

Verwandte Themen