(А) Python кодPython 3 - Вычислить среднее значение и запись в .csv
import csv
from collections import defaultdict
data = defaultdict(str)
#Make a list with the predefined variables
definition = ["record_id", "abbreviation", "patient_id", "study_id",
"step_count", "distance", "ambulation_time", "velocity", "cadence",
"normalized_velocity", "step_time_differential", "step_length_differential",
"cycle_time_differential", "step_time", "step_length", "step_extremity",
"cycle_time", "stride_length", "hh_base_support", "swing_time",
"stance_time", "single_supp_time", "double_supp_time", "toe_in_out"]
#Read the GaitRite .csv
with open('C:/Users/Kay_v/Documents/School/Exports/Export 3.csv', 'r') as f, open('C:/Users/Kay_v/Documents/School/Exports/result.csv', 'w') as outfile:
reader = csv.reader(f, delimiter=';')
next(reader, None) # skip the headers
writer = csv.DictWriter(outfile, fieldnames=definition, lineterminator='\n')
writer.writeheader()
#Read the .csv row by row
for row in reader:
#print(row)
for item in definition:
h = item.replace('_', '')
r0 = row[0].lower().replace(' ', '')
if h in r0:
try:
avg = round((float(row[1].replace(',', '.')) + float(row[2].replace(',', '.')))/2, 2)
except ValueError:
avg = 0 # for cases with entry strings or commas
#print(avg)
print(h, r0, row[1], row[2])
data[item] = row[1]
data['record_id'] = 1
# Write the clean result.csv
writer.writerow(data)
(Б) Проблема
Проблема состоит в том числе о средних значений в Result.csv , Я использую следующую часть кода для вычисления среднего значения, когда переменная имеет два значения. В нынешней ситуации средняя рассчитывается, но он не отображается в Result.csv
try:
avg = round((float(row[1].replace(',', '.')) + float(row[2].replace(',', '.')))/2, 2)
except ValueError:
avg = 0 # for cases with entry strings or commas
Я надеюсь, что кто-то может помочь, чтобы получить среднее значение, чтобы показать в Result.csv Aswell, был бы весьма признателен!
Не стесняйтесь играть с файлом экспорта я использую, вы можете скачать его здесь: CSV export file
Ну, вы рассчитали 'avg', но где вы вставляете его в данные? –
Вам нужно написать переменную 'avg' в вашу переменную 'data', которая будет записана в файл CSV. –
Значит, мне нужно добавить что-то вроде этого: data [avg] = row [1]? Всякий раз, когда я это сделать и запустить это дает мне ошибку: Traceback (самый последний вызов последнего): линия 40, в writer.writerow (данные) Файл «C: \ Users \ Kay_v \ Anaconda3 \ Lib \ CSV .py ", строка 153, в writerow return self.writer.writerow (self._dict_to_list (rowdict)) Файл« C: \ Users \ Kay_v \ Anaconda3 \ lib \ csv.py », строка 149, в _dict_to_list + "," .join ([repr (x) для x in wrong_fields])) ValueError: dict содержит поля не в полевых именах: 0, 0.56, 194.64, 4.65, 1.11, 175.05, 0.47, 97.27, 0.65 –
Yak