【发布时间】:2016-05-26 12:19:48
【问题描述】:
我正在尝试从 CSV 文件 (A) 读取数据,提取数据,然后将其写入另一个 CSV 文件 (B)。在新文件 B 中,我想要两行。第一行应包含所有预定义变量,第 2 行应填充属于第 1 行中特定变量的所有值。
我希望任何人都可以告诉我实现这一目标的最佳方法。 (我在本文末尾添加了我使用的 .csv 文件)
(A) Python 代码
import re
import csv
#Call for the export file
data = open('C:/Exports/Export 3.csv')
#Make a list with the predefined variables
definition = ["record_id", "abbreviation", "study_id", "step_count",
"distance", "ambulation_time", "velocity", "cadence", "norm_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_support_time", "double_support_time", "toe_in_out"]
my_data = {}
#Show data for each row without whitespace
for line in data:
line = line.rstrip()
#print(line)
values = re.findall("-?[0-9].+", line)
print(values)
这是上述代码将生成的输出的一部分:
[]
['3;']
['292,34;']
['1,67;']
['175,1;']
['107,8;']
[]
['0,004;']
['1,051;']
['0,008;']
[]
[]
['0,558;0,554']
['96,746;97,797']
[]
['1,116;1,108']
['192,159;197,122']
['2,988;6,32']
['0,466;0,466']
['0,65;0,642']
['0,466;0,466']
['0,184;0,176']
['41,8;42,1']
['58,2;57,9']
['41,8;42,1']
['16,5;15,9']
['-1,1;4']
正如您在输出代码中看到的,有些行包含两个值,例如: ['2,988;6,32'] 这些需要变为 1 值,方法是在将它们写入之前计算这两个值的平均值一个 csv 文件。
(B) 期望的输出
record_id abbreviation study_id step_count distance
1 3 292,34
如果你喜欢,你可以玩导出文件,你可以在这里下载它: CSV export file
【问题讨论】:
-
提供更多关于样本输入和样本输出的信息,这样你就不会得到虚构的答案
-
谢谢!我更改了一些文本以使其更易于理解,并在最后添加了我使用的输入 .csv 文件。还添加了所需输出的示例。