Вопрос:
Я получаю эту ошибку:
line 121, in <module> data=convertData(data,header) line 86, in convertData Data.append([row[item] for item in header]) KeyError: ‘ELEM’
Код:
def convertData(data,header): Data=[] for row in data: Data.append([row[item] for item in header]) !line 86 return Data data=convertData(data,header) !line 121 writeTable(data,header,’%s %s Data’ % (line,lc),’table%s%s.tex’ % (line,lc))
Данные и заголовок из файла *.csv. Образец данных.csv:
ELEM EType OD T Tc 1 16 2.375 0.462 0.462
Я не уверен, в чем проблема. Может кто-нибудь мне помочь? Спасибо.
Ответ №1
csv.reader, вы читаете CSV файл с помощью csv.reader который возвращает числовые данные с числовыми индексами.
Вместо поиска ie row[«ELEM»] попробуйте row[0].
Ответ №2
Это не связано с вашей ошибкой, но если вы хотите использовать numpy чтобы избежать этих проблем csv:
import numpy as np dat = np.genfromtxt(‘dat.txt’, dtype=float, delimiter=’t’, skip_header=1) print dat # all data in 2d array
Или если вы хотите сохранить имена столбцов:
import numpy as np dat = np.genfromtxt(‘dat.txt’, dtype=float, delimiter=’t’, names=True) print dat[‘ELEM’] # the first column accessed by its names
Предположение: столбец данных разделен на tab.