比较csv文件python中的单元格值

比较csv文件python中的单元格值,python,csv,Python,Csv,我在CSV文件中有以下数据集 [1,1,1,2,2,2,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 i

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

[1,1,1,2,2,2,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循环的结果中有些错误,但我不知道我的错误在哪里。我的想法是通过比较细胞值。如果我==(I+1):对于初学者来说,就不可能是
真的
,我可能不会详细讨论你的循环,这是非常错误的

下一步,您最好使用并合计组的长度:

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代表x/v)
会更有效/更合适,我还没有将这两种方法都设置为基准)

我得到:

[3, 4, 3, 2, 1]
旁白:读取csv文件的第一列并将结果转换为整数可以通过以下方法简单实现:

results = [int(row[0]) for row in reader]

如果i==(i+1):
那就不会发生!是否要检查上一个元素是否与下一个元素相同?为什么要执行
results=data;结果=[结果中i的int(i)]
?为什么不直接做
results=[int(i)for i in data]