Четете в няколко колони с csv readin

Може би просто съм придирчив, но като потребител на Matlab, който се опитва да конвертира, наистина имам проблеми с импортирането на данни. Изглежда не мога да чета повече от две колони с данни с прочетено CSV. Ето кодирането, което използвам

x,y = [],[]
csv_reader = csv.reader(open('Data.csv'))
for line in csv_reader:
    x.append(line[0])
    y.append(line[1])

Ако използвам Data.csv с повече от 2 колони, изглежда не мога да върна нищо от 3-та колона и нагоре, така че трябва да чета в няколко csv файла, за да получа данните, които искам.

Също така бих искал да спомена, че използвам само CSV формат, защото не мога да разбера как да импортирам нещо друго. Отново, като предишен потребител на Matlab, предпочитам да копирам електронна таблица в .txt файл и да го импортирам. Всяка насока по въпроса също би била високо оценена. Много благодаря


person Casivio    schedule 17.07.2013    source източник


Отговори (1)


Това работеше добре за мен, докато продължавах да добавям променливи, т.е. z=[] и z.append(line[2]), и така нататък... Може би не разбирам въпросите?

import csv
x,y,z = [],[],[]
csv_reader = csv.reader(open('Data.csv'))
for line in csv_reader:
    x.append(line[0])
    y.append(line[1])
    z.append(line[2])

Ако копирате от електронна таблица и поставите в текстов файл, можете да отворите ('Data.txt') и да разделите всеки ред с \t, ако това е разделителят между колоните.

xx,yy,zz = [],[],[]
fromtextfile = open('Data.txt')
#(append each list) for 
 #item in the line, split by tabs, into a list for line in the file
[(xx.append(item[0]),yy.append(item[1]),zz.append(item[2])) \
 for item in [line[:-1].split('\t') for line in fromtextfile]]

#or

xxx,yyy,zzz = [],[],[]
fromtextfile = open('Data.txt')
temp = []
for line in fromtextfile:
    temp.append(line[:-1])
for item in temp:
    templist = item.split('\t')
    xxx.append(templist[0])
    yyy.append(templist[1])
    zzz.append(templist[2])

fromtextfile.close()
person MakeCents    schedule 30.07.2013