【发布时间】:2016-06-30 09:05:33
【问题描述】:
(A) Python 代码
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)
(B) 问题
问题在于将平均值包含在 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 中,将不胜感激!
随意使用我正在使用的导出文件,您可以在这里下载: CSV export file
【问题讨论】:
-
嗯,你已经计算了
avg,但是你在哪里把它插入到数据中呢? -
您需要将变量
avg写入您的变量data,该变量将写入您的CSV 文件。 -
这意味着我必须添加如下内容:data[avg] = row[1]?每当我这样做并运行时,它都会给我一个错误: Traceback(最近一次调用最后一次):第 40 行,在
writer.writerow(data) 文件“C:\Users\Kay_v\Anaconda3\lib\csv.py” ,第 153 行,在 writerow 返回 self.writer.writerow(self._dict_to_list(rowdict)) 文件 "C:\Users\Kay_v\Anaconda3\lib\csv.py",第 149 行,在 _dict_to_list + ", ".join( [repr(x) for x in wrong_fields])) ValueError: dict contains fields not in fieldnames: 0, 0.56, 194.64, 4.65, 1.11, 175.05, 0.47, 97.27, 0.65 -
@Yak 很难得到你想要达到的目标 - 提供一些你想要的示例 O/P!
-
@wolframalpha 我做了一个新的“答案”帖子来解释我想要达到的确切结果。我希望这可以帮助您了解我面临的问题。