Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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
如何将csv文件中的信息与Python进行比较?_Python_Compare_Lines - Fatal编程技术网

如何将csv文件中的信息与Python进行比较?

如何将csv文件中的信息与Python进行比较?,python,compare,lines,Python,Compare,Lines,我正在处理一个csv文件。 我有不同的列,每个列对应于我的数据集的一个信息。 假设我的文件中每行都包含: 姓名信息1信息2信息3 -对于具有相同名称和信息1和2的行,我必须计算inf3的平均值 这是我停下来的一段代码: col_a=[row[1] for row in file] for i in col_a: currentrow=col_a[1] nextrow=col_a[2] for i in range(0,len(col_a)): if (currentr

我正在处理一个csv文件。 我有不同的列,每个列对应于我的数据集的一个信息。 假设我的文件中每行都包含:

  • 姓名信息1信息2信息3
-对于具有相同名称和信息1和2的行,我必须计算inf3的平均值

这是我停下来的一段代码:

col_a=[row[1] for row in file]
for i in col_a:
    currentrow=col_a[1]
    nextrow=col_a[2]
for i in range(0,len(col_a)):
    if (currentrow)==set(nextrow):???

几个月前我开始编程,请理解我的困难。

我仍在努力理解需要什么,但现在开始。下面的脚本首先将第一列匹配的行组块在一起,例如3个“aaa”行

对于每个块,它定位具有匹配的感兴趣列的行。如果发现两个或两个以上,则计算其平均值

import collections

file = [
    ["aaa", "3", "x", "g", "b", 4],
    ["aaa", "4", "e", "r", "t", 3],
    ["aaa", "3", "x", "g", "b", 7],
    ["vv1", "5", "w", "a", "s", 42],
    ["vv2", "5", "w", "a", "s", 10],
    ["vvv", "5", "w", "a", "s", 1],
    ["vvv", "5", "w", "a", "s", 4],
    ["vvv", "5", "w", "a", "s", 3]]

def calculate_stats(block):
    d = collections.defaultdict(list)
    # Build a dictionary of rows with matching columns
    for cols in block:  
        key = (cols[2], cols[3])        # columns to match e.g. "x" and "g"
        d[key].append(cols)

    for key, rows in d.items():
        if len(rows) > 1:
            col_f = [cols[5] for cols in rows]      # calculate mean on col f
            print "Matched: ", rows, "Mean: ", sum(col_f) / float(len(col_f))

last_row = file[0]
block = []

for cols in file:
    if cols[0] == last_row[0]:
        block.append(cols)
    elif len(block) > 1:
        calculate_stats(block)
        block = [cols]
    else:
        block = []
    last_row = cols

# Deal with any remainder

if len(block) > 1:
    calculate_stats(block)
对于我使用的示例数据,将显示以下结果:

Matched:  [['aaa', '3', 'x', 'g', 'b', 4], ['aaa', '3', 'x', 'g', 'b', 7]] Mean:  5.5
Matched:  [['vvv', '5', 'w', 'a', 's', 4], ['vvv', '5', 'w', 'a', 's', 3]] Mean:  3.5

阅读python的csv模块不,我可以阅读csv文件。我不知道如何进行比较。我将放一段代码。从您的示例中不清楚您需要什么。您是否可以编辑您的问题以包含CSV中的两行完整内容?一个匹配,一个不匹配。文件排序了吗?你需要记住过去的台词吗?谢谢你的评论和补充信息。你能编辑这个问题以包含它们吗?所以这个问题需要独立思考,因为这里的评论被认为是转瞬即逝的。谢谢,即使我解释得不正确,你也完全理解!很乐意帮忙,你觉得它很有用。