У меня есть огромный набор данных, который организован в двумерный массив строк, которые я преобразовываю в числа с плавающей точкой. В настоящее время я выполняю эту операцию, используя вложенные циклы и функцию python float()
, но получаю сообщение об ошибке: ValueError: could not convert string to float: 'slow'
.
Другие ответы, связанные с этим вопросом, рекомендуют maps()
, который я пробовал, но не могу правильно приступить к работе. Закомментировано моя попытка. Это не выдает «медленную» ошибку, но мои данные не отображаются правильно в моей текущей конфигурации. Какими способами можно быстро преобразовать csv строк в float, используя мой csv parser? Я использую свой собственный синтаксический анализатор, потому что файл CSV, который я использую, имеет длинный сложный заголовок. Как улучшить производительность?
# parse() takes .lvm input as a string and returns a clean 2-D array of data
def parse(self):
data = self.get_data()
word = 'Comment'
start_index = data.find(word) + len(word)
if start_index != -1:
data_block = data[start_index:]
data_list = data_block.split('\n') # create grid rows
data_list.pop(0) # remove first blank value
data_list.pop(len(data_list) - 1) # remove last blank value
for row in range(len(data_list)):
data_list[row] = data_list[row].split('\t') # create grid cols
data_list[row].pop(0) # remove leading blank values
for col in range(len(data_list[row])):
data_list[row][col] = float(data_list[row][col])
#map(float, data_list)
return data_list
Пример данных:
Writer_Version 2
Reader_Version 2
Separator Tab
Decimal_Separator .
Multi_Headings No
X_Columns No
Time_Pref Absolute
Operator bowman-lab
Date 2019/06/12
Time 10:52:28.98046875
***End_of_Header***
Channels 17
Samples 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Date 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17 2019/06/17
Time 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625 00:00:24.056640625
X_Dimension Time Time Time Time Time Time Time Time Time Time Time Time Time Time Time Time Time
X0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0
Delta_X 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
***End_of_Header***
X_Value Untitled Untitled 1 Untitled 2 Untitled 3 Untitled 4 Untitled 5 Untitled 6 Untitled 7 Untitled 8 Untitled 9 Untitled 10 Untitled 11 Untitled 12 Untitled 13 Untitled 14 Untitled 15 Untitled 16 Comment
167.999595 20.424800 3.683480E-7 7.250010E-8 4.262870E-8 3.519030E-9 12.113764 20.602297 3.465850E-7 6.558680E-13 5.736950E-13 5.163760E-13 4.677860E-13 4.531120E-13 4.404600E-13 4.197010E-13 4.200990E-13
168.000278 20.209800 3.682400E-7 7.128310E-8 4.211100E-8 3.579760E-9 11.763638 19.912815 3.499790E-7 6.066650E-13 5.517010E-13 5.219980E-13 4.545310E-13 4.693880E-13 4.422010E-13 4.086500E-13 4.332030E-13
168.000949 19.994800 3.700140E-7 7.218710E-8 4.114490E-8 3.547610E-9 11.597921 20.348094 3.482310E-7 6.436670E-13 5.749850E-13 4.861690E-13 4.723660E-13 4.492960E-13 4.461890E-13 4.627340E-13 4.153260E-13
168.001620 20.263500 3.668960E-7 7.258560E-8 4.234280E-8 3.562130E-9 11.886933 20.377022 3.460820E-7 6.091490E-13 5.796400E-13 5.023800E-13 4.766230E-13 4.636040E-13 4.376650E-13 4.207870E-13 4.106500E-13
168.002303 20.102300 3.676490E-7 7.148780E-8 4.086190E-8 3.593330E-9 11.371597 19.894582 3.484330E-7 6.135020E-13 5.799730E-13 4.974020E-13 4.556280E-13 4.468340E-13 4.787080E-13 4.021570E-13 4.381160E-13
168.002975 20.048500 3.665200E-7 7.319230E-8 4.065750E-8 3.582310E-9 11.349520 20.431593 3.468890E-7 6.248330E-13 5.571080E-13 4.762140E-13 4.785580E-13 4.804170E-13 4.381590E-13 4.416420E-13 4.154980E-13
168.003657 20.263500 3.654450E-7 7.281390E-8 4.126510E-8 3.568820E-9 11.562673 20.402794 3.447040E-7 6.328950E-13 5.828000E-13 5.180320E-13 4.820620E-13 4.573160E-13 4.551010E-13 4.197980E-13 4.287960E-13
168.004329 20.156000 3.663590E-7 7.158880E-8 4.066320E-8 3.596200E-9 11.307269 19.906791 3.475940E-7 6.310140E-13 5.826500E-13 5.099370E-13 4.840400E-13 4.593690E-13 4.370300E-13 4.312680E-13 4.105530E-13
168.005000 20.048500 3.682940E-7 7.245720E-8 4.078780E-8 3.518080E-9 11.593767 20.595666 3.454440E-7 6.227800E-13 5.723940E-13 5.207940E-13 4.895550E-13 4.598850E-13 4.733010E-13 4.329670E-13 4.348700E-13
168.005683 20.048500 3.675950E-7 7.206990E-8 4.156710E-8 3.572390E-9 11.635656 20.174141 3.465520E-7 6.309170E-13 5.952270E-13 5.362420E-13 5.016380E-13 4.777300E-13 4.726130E-13 4.423840E-13 4.353530E-13
168.006354 20.156000 3.697450E-7 7.146210E-8 4.046190E-8 3.593570E-9 11.259527 19.886102 3.479970E-7 6.345190E-13 5.939700E-13 5.047770E-13 4.874590E-13 4.812450E-13 4.645720E-13 4.578530E-13 4.002650E-13```