比较单元格值 csv 文件 python



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

[1, 1, 1, 2, 2, 2, 2, 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 循环出了点问题,但我无法弄清楚我的错误在哪里。我的想法是通过比较单元格值。或

我不会详细介绍您的循环,这是非常错误的,if i==(i+1):对于初学者来说无法True

接下来,你最好用itertools.groupby和组的长度相加:

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)会更高性能/更合适,我没有对这两种方法进行基准测试(

我得到:

[3, 4, 3, 2, 1]

旁白:读取 csv 文件的第一列并将结果转换为整数可以通过以下方式简单地实现:

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

最新更新