Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较多行python_Python_Compare_Rows - Fatal编程技术网

比较多行python

比较多行python,python,compare,rows,Python,Compare,Rows,我是编程新手。 请帮我完成以下任务。 我有一个包含未知行的csv数据。但每行的元素数如下所示: Right \FR\Window open\Start 16.9 11.2 18.2 Right \FR\Window open\Start 16.5 11.7 17.5 Right \FR\Window open\Start 16.9 11.7 18 Right \FR\Window open\End 7.61 1.76

我是编程新手。 请帮我完成以下任务。 我有一个包含未知行的csv数据。但每行的元素数如下所示:

Right   \FR\Window open\Start   16.9    11.2    18.2
Right   \FR\Window open\Start   16.5    11.7    17.5
Right   \FR\Window open\Start   16.9    11.7    18
Right   \FR\Window open\End     7.61    1.76    8.37
Right   \FR\Window open\End     7.3     1.74    8.6
Right   \FR\Window open\End     7.64    2.45    8.43
Right   \FR\Window close\Start  13      8.2     14.4
Right   \FR\Window close\Start  12.9    7.55    14.5
我想计算那些具有相同字符串
\FR\Window open\Start
\FR\Window open\End
的行的平均值,依此类推


谢谢

您可以使用python中的csv模块从csv文件中获取数据,如下所示:

import csv

start_values = {'col3':[], 'col4':[], 'col5':[]}
end_values = {'col3':[], 'col4':[], 'col5':[]}

with open('example.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        if row['col2'] == '\FR\Window open\Start':
            start_values['col3'].append(float(row['col3']))
            start_values['col4'].append(float(row['col4']))
            start_values['col5'].append(float(row['col5']))
        if row['col2'] == '\FR\Window open\End':
            end_values['col3'].append(float(row['col3']))
            end_values['col4'].append(float(row['col4']))
            end_values['col5'].append(float(row['col5']))

    csvfile.close()
print('Start average for col3: {:.2f}, col4: {:.2f}, col5: {:.2f}'.format(sum(start_values['col3'])/len(start_values['col3']), sum(start_values['col4'])/len(start_values['col4']), sum(start_values['col5'])/len(start_values['col5'])))
print('End average for col3: {:.2f}, col4: {:.2f}, col5: {:.2f}'.format(sum(end_values['col3'])/len(end_values['col3']), sum(end_values['col4'])/len(end_values['col4']), sum(end_values['col5'])/len(end_values['col5'])))
在数据中使用逗号分隔的example.csv

col1,col2,col3,col4,col5
Right,\FR\Window open\Start,16.9,11.2,18.2
Right,\FR\Window open\Start,16.5,11.7,17.5
Right,\FR\Window open\Start,16.9,11.7,18
Right,\FR\Window open\End,7.61,1.76,8.37
Right,\FR\Window open\End,7.3,1.74,8.6
Right,\FR\Window open\End,7.64,2.45,8.43
Right,\FR\Window close\Start,13,8.2,14.4
Right,\FR\Window close\Start,12.9,7.55,14.5
该程序将每一行读入字典,以便轻松访问,正如您在查找起始和结束的ifs中所看到的那样(
if row['col2']=='\FR\Window open\Start':
)。然后,它用各自的值填充
start_值
end_值
字典。最终,这些词典将如下所示:

{'col3': [16.9, 16.5, 16.9, 13.0, 12.9], 'col4': [11.2, 11.7, 11.7, 8.2, 7.55], 'col5': [18.2, 17.5, 18.0, 14.4, 14.5]}
上面的一个是
start\u值
。“开始”行上的每一列数字都整齐地排列在一个列表中。然后你所要做的就是
打印(sum(list)/len(list))
这是你的平均值,用String.format整齐地格式化为小数点后2位


您可以在上了解有关使用CSV文件的更多信息。这是一个方便的字符串格式化指南

非常感谢你的帮助。我理解你的解决办法。不幸的是,我在运行这段代码时仍然有一个问题:print('Start average for col3:{.2f},col4:{.2f},col5:{.2f})。format(sum(Start_values['col3'])/len(Start_values['col3'])、sum(Start_values['col4'])/len(Start_values['col4'])、sum(Start_values['col5'])/len Start_values['col5'])ZeroDivisionError:DivisionbyZero我明天会仔细查看。@AlexedArianmarius您的csv文件是否用逗号分隔?这个错误意味着其中一个列表的长度为零,所以我猜从csv中获取数据会有问题。此代码仅在csv文件的格式与我的答案中的格式相同时有效;你可以用记事本打开查看。非常感谢。它现在正在工作。我以前使用了错误的csv文件。