比较单元格值csv文件python

时间:2017-04-06 08:42:30

标签: python csv

我在CSV文件中有以下数据集

[1,1,1,2,2,2,3,3,3,3,1,1,2]

现在我想通过比较它们并将它存储在数组中来计算每个值,但我不想要频率。所以我的输出应该是这样的:

[3,4,3,2,1]

我的代码如下:

import csv

with open("c:/Users/Niels/Desktop/test.csv", 'rb') as f:
    reader = csv.reader(f, delimiter=';')
    data = []

    for column in reader:
        data.append(column[0])

    results = data
    results = [int(i) for i in results]
    print results

    dataFiltered = []
    for i in results:
        if i == (i+1):
            counter = counter + 1
            dataFiltered.append(counter)
            counter = 0
    print dataFiltered

我的想法是通过比较细胞值。我知道结果的for循环有问题,但我无法弄清楚我的错误在哪里。我的想法是通过比较单元格值。也许

1 个答案:

答案 0 :(得分:4)

我不会详细了解非常错误的循环细节,b[]对于初学者来说不能是if i==(i+1):

接下来,您最好使用itertools.groupby并总结一下这些群组的长度:

True

import itertools results = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 1, 1, 2] freq = [len(list(v)) for _,v in itertools.groupby(results)] print(freq) 使用len(list(v))强制对分组项进行迭代,以便我们可以计算长度(可能list会更高效/更合适,我还没有采用这两种方法)

我明白了:

sum(1 for x in v)

除此之外:读取csv文件的第一列并将结果转换为整数可以通过以下方式实现:

[3, 4, 3, 2, 1]